如易云解密4-運營系統(tǒng)權(quán)限設(shè)計

?????? 【by yhliu】

【業(yè)務(wù)領(lǐng)域】 ???

?????? 互聯(lián)網(wǎng)產(chǎn)品要做好服務(wù),必須要有一個強大完善靈活的運營支撐系統(tǒng)。這個線上的系統(tǒng)一定會對應(yīng)到一個龐雜的線下組織-運營團隊。對于一個大型互聯(lián)網(wǎng)公司,可能通過組織結(jié)構(gòu)可以識別出大家的運營分工;也可能對于一些運營人員有超出組織結(jié)構(gòu)外的運營智能。對于可運營的數(shù)據(jù),可能根據(jù)所服務(wù)的地域(北京/上海等)、所服務(wù)對象的品類(男裝/女裝 等)、也可能是不同職權(quán)(大區(qū)經(jīng)理/區(qū)域經(jīng)理 等),也可能是某一對象的特別實例;對于功能 基本按照大家不同的工作職能分工來確定。

【解決方案】 ?

??????? 基于GBAC(GROUP-Based Access Control)的權(quán)限管理控制,用戶通過角色與權(quán)限進行關(guān)聯(lián),一個用戶可以擁有若干角色,每一個角色擁有若干權(quán)限。這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型,在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對多的關(guān)系。其對應(yīng)關(guān)系如下:

這樣做的好處:

·不同職責(zé)的人員,對于系統(tǒng)操作的權(quán)限應(yīng)該是不同的。優(yōu)秀的業(yè)務(wù)系統(tǒng),這是最基本的功能。

·可以對“組”進行權(quán)限分配。對于一個大企業(yè)的業(yè)務(wù)系統(tǒng)來說,如果要求管理員為其下員工逐一分配系統(tǒng)操作權(quán)限的話,是件耗時且不夠方便的事情。所以,系統(tǒng)中就提出了對“組”進行操作的概念,將權(quán)限一致的人員編入同一組,然后對該組進行權(quán)限分配。

·權(quán)限管理系統(tǒng)應(yīng)該是可擴展的。它應(yīng)該可以加入到任何帶有權(quán)限管理功能的系統(tǒng)中。就像是組件一樣的可以被不斷的重用,而不是每開發(fā)一套管理系統(tǒng),就要針對權(quán)限管理部分進行重新開發(fā)。

·滿足業(yè)務(wù)系統(tǒng)中的功能權(quán)限。傳統(tǒng)業(yè)務(wù)系統(tǒng)中,存在著兩種權(quán)限管理,其一是功能權(quán)限的管理,而另外一種則是資源權(quán)限的管理,在不同系統(tǒng)之間,功能權(quán)限是可以重用的,而資源權(quán)限則不能。

涉及到的表

具體sql請參考相關(guān)文檔

實體表

user(用戶表關(guān)系表或從表中對應(yīng)id->userId)

role(角色表id->roleId)

resource(資源表對應(yīng)一條記錄對應(yīng)頁面上面的一項菜單id->resourceId)

model(模型表一條記錄對應(yīng)一張實體表id->model)

data_model(數(shù)據(jù)權(quán)限modelid->dataId)

datagroup(數(shù)據(jù)組datagroup->Id)

實體關(guān)系表:

role_user(用戶—角色對應(yīng)關(guān)聯(lián)表)

role_resource(角色—資源關(guān)聯(lián)表,什么樣的角色對應(yīng)那些菜單功能)

user_date(用戶數(shù)據(jù)權(quán)限,如對某一地區(qū))

datagroup_data(數(shù)據(jù)組和數(shù)據(jù)的對應(yīng)關(guān)系)

從表

resource從表:

resource_grid(資源grid表)

resource_action(資源操作表)

1.用戶-角色—資源權(quán)限操作的說明:

user表存儲用戶(管理人員)的基本信息 這里稱之為【用戶組】

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

resource_action操作權(quán)限

增 、刪 、改 、查【權(quán)限組】

這三個表之間的關(guān)系是多對多的,一個權(quán)限可能同時屬于多個角色,一個角色中也可能同時包含多個權(quán)限。同樣的道理,一個用戶只有一個角色,一個角色中可能包含多個用戶

用戶-角色-資源權(quán)限表之間的關(guān)系:

資源部分各表關(guān)系(data_Model第二部分會說明):

資源表用途主要是作為后臺管理系統(tǒng)頁面左側(cè)菜單和點擊菜單之后右側(cè)展示出的相應(yīng)的數(shù)據(jù)及操作權(quán)限:

例如:

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 '學(xué)校代碼',

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

`endShcoolYear`int(11) unsigned DEFAULT '0' COMMENT '結(jié)束年份',

`classState`tinyint(4) unsigned DEFAULT '0' COMMENT '班級狀態(tài)',

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

`status`tinyint(4) NOT NULL COMMENT '狀態(tài)',

`creator`varchar(64) DEFAULT NULL COMMENT '創(chuàng)建人',

`createDate`bigint(20) DEFAULT NULL COMMENT '創(chuàng)建時間',

`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 '按照規(guī)則生成的別名',

`schoolYear`int(11) DEFAULT NULL COMMENT '學(xué)年',

PRIMARYKEY (`id`),

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

) ENGINE=InnoDBAUTO_INCREMENT=12467 DEFAULT CHARSET=utf8 COMMENT='班級信息管理|班級信息管理|基礎(chǔ)數(shù)據(jù)管理|CreateBaseDomain\r\n班級信息管理model'

表中數(shù)據(jù):

model班級表的模型bd_classes

resource表

說明url指訪問路徑

parentId指上級資源(菜單)

numb菜單標(biāo)示(相當(dāng)于唯一標(biāo)識)

longNum如數(shù)據(jù)中的班級信息管理的菜單層次應(yīng)為 基礎(chǔ)數(shù)據(jù)管理-班級信息管理

modelId外鍵model表的id

resource_grid


resource_grid

說明:

resource_grid主要作用是動態(tài)配置頁面數(shù)據(jù)展示的表格

orderNum表示在表格的第幾列

width:列的寬度

formater調(diào)用頁面js對某一列數(shù)據(jù)的處理

resource_action對于數(shù)據(jù)的操作權(quán)限

role

role_resource

user

role_user

2.用戶-數(shù)據(jù)模型|數(shù)據(jù)組-數(shù)據(jù)權(quán)限

user用戶表

data_model數(shù)據(jù)模型表

datagrounp數(shù)據(jù)組表

data表數(shù)據(jù)表

數(shù)據(jù)組與數(shù)據(jù)模型之間關(guān)系

通過數(shù)據(jù)模型(data_model)和數(shù)據(jù)組(datagroup)分配用戶某一地區(qū)的數(shù)據(jù)權(quán)限(注data這里是地區(qū))

data_model說明:

user_data

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容