如易云解密4-运营系统权限设计

       【by yhliu】

【业务领域】    

       互联网产品要做好服务,必须要有一个强大完善灵活的运营支撑系统。这个线上的系统一定会对应到一个庞杂的线下组织-运营团队。对于一个大型互联网公司,可能通过组织结构可以识别出大家的运营分工;也可能对于一些运营人员有超出组织结构外的运营智能。对于可运营的数据,可能根据所服务的地域(北京/上海等)、所服务对象的品类(男装/女装 等)、也可能是不同职权(大区经理/区域经理 等),也可能是某一对象的特别实例;对于功能 基本按照大家不同的工作职能分工来确定。

【解决方案】  

        基于GBAC(GROUP-Based Access Control)的权限管理控制,用户通过角色与权限进行关联,一个用户可以拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型,在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。其对应关系如下:

这样做的好处:

·不同职责的人员,对于系统操作的权限应该是不同的。优秀的业务系统,这是最基本的功能。

·可以对“组”进行权限分配。对于一个大企业的业务系统来说,如果要求管理员为其下员工逐一分配系统操作权限的话,是件耗时且不够方便的事情。所以,系统中就提出了对“组”进行操作的概念,将权限一致的人员编入同一组,然后对该组进行权限分配。

·权限管理系统应该是可扩展的。它应该可以加入到任何带有权限管理功能的系统中。就像是组件一样的可以被不断的重用,而不是每开发一套管理系统,就要针对权限管理部分进行重新开发。

·满足业务系统中的功能权限。传统业务系统中,存在着两种权限管理,其一是功能权限的管理,而另外一种则是资源权限的管理,在不同系统之间,功能权限是可以重用的,而资源权限则不能。

涉及到的表

具体sql请参考相关文档

实体表

user(用户表关系表或从表中对应id->userId)

role(角色表id->roleId)

resource(资源表对应一条记录对应页面上面的一项菜单id->resourceId)

model(模型表一条记录对应一张实体表id->model)

data_model(数据权限modelid->dataId)

datagroup(数据组datagroup->Id)

实体关系表:

role_user(用户—角色对应关联表)

role_resource(角色—资源关联表,什么样的角色对应那些菜单功能)

user_date(用户数据权限,如对某一地区)

datagroup_data(数据组和数据的对应关系)

从表

resource从表:

resource_grid(资源grid表)

resource_action(资源操作表)

1.用户-角色—资源权限操作的说明:

user表存储用户(管理人员)的基本信息 这里称之为【用户组】

role角色表 【角色组】或者【管理组】

resource_action操作权限

增 、删 、改 、查【权限组】

这三个表之间的关系是多对多的,一个权限可能同时属于多个角色,一个角色中也可能同时包含多个权限。同样的道理,一个用户只有一个角色,一个角色中可能包含多个用户

用户-角色-资源权限表之间的关系:

资源部分各表关系(data_Model第二部分会说明):

资源表用途主要是作为后台管理系统页面左侧菜单和点击菜单之后右侧展示出的相应的数据及操作权限:

例如:

CREATE TABLE`bd_classes` (

`id`bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',

`classCode`varchar(32) NOT NULL DEFAULT '' COMMENT 'code',

`customName`varchar(64) NOT NULL DEFAULT '' COMMENT '名称',

`schoolCode`varchar(64) NOT NULL DEFAULT '' COMMENT '学校代码',

`startShcoolYear`int(11) unsigned DEFAULT '0' COMMENT '诞生于',

`endShcoolYear`int(11) unsigned DEFAULT '0' COMMENT '结束年份',

`classState`tinyint(4) unsigned DEFAULT '0' COMMENT '班级状态',

`classOrder`int(11) DEFAULT '0',

`status`tinyint(4) NOT NULL COMMENT '状态',

`creator`varchar(64) DEFAULT NULL COMMENT '创建人',

`createDate`bigint(20) DEFAULT NULL COMMENT '创建时间',

`lastModifier`varchar(64) DEFAULT NULL COMMENT '修改人',

`lastModDate`bigint(20) DEFAULT NULL COMMENT '修改时间',

`history` varchar(128) DEFAULT NULL COMMENT '历史所在年级Id',

`gradeCode`varchar(64) DEFAULT NULL COMMENT '年级编号',

`weixinId`int(11) DEFAULT NULL COMMENT '微信的专用id',

`aliasName`varchar(200) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '按照规则生成的别名',

`schoolYear`int(11) DEFAULT NULL COMMENT '学年',

PRIMARYKEY (`id`),

KEY`classCode` (`classCode`) USING HASH,

) ENGINE=InnoDBAUTO_INCREMENT=12467 DEFAULT CHARSET=utf8 COMMENT='班级信息管理|班级信息管理|基础数据管理|CreateBaseDomain\r\n班级信息管理model'

表中数据:

model班级表的模型bd_classes

resource表

说明url指访问路径

parentId指上级资源(菜单)

numb菜单标示(相当于唯一标识)

longNum如数据中的班级信息管理的菜单层次应为 基础数据管理-班级信息管理

modelId外键model表的id

resource_grid


resource_grid

说明:

resource_grid主要作用是动态配置页面数据展示的表格

orderNum表示在表格的第几列

width:列的宽度

formater调用页面js对某一列数据的处理

resource_action对于数据的操作权限

role

role_resource

user

role_user

2.用户-数据模型|数据组-数据权限

user用户表

data_model数据模型表

datagrounp数据组表

data表数据表

数据组与数据模型之间关系

通过数据模型(data_model)和数据组(datagroup)分配用户某一地区的数据权限(注data这里是地区)

data_model说明:

user_data

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容