近日在閱讀一本asp.net的書時(shí)(國(guó)人寫的),其中提到了一個(gè)簡(jiǎn)易權(quán)限的小例子,感覺說的還是比較清楚,有點(diǎn)代表性,
故在此簡(jiǎn)單介紹下其實(shí)現(xiàn)原理
其核心是建立起用戶、角色,功能,模塊功能四者的關(guān)系。數(shù)據(jù)庫(kù)設(shè)計(jì)如下
1 用戶角色表
User表
字段:userid 自遞增字段
username
password
RoleTable表(角色表)
字段
Roleid 自遞增字段
RoleName
用戶角色表 UserRole
字段
UserRoleid(自遞增字段)
userid
roleid
用戶表和角色表通過用戶角色表進(jìn)行關(guān)聯(lián),用戶和角色之間的關(guān)系是多對(duì)多
2 角色權(quán)限表RoleRight
字段
RoleRightId 自遞增字段
RoleId
ModuleFunctionId
這里解析一下,比如用戶tom,具有管理員的角色(假設(shè)在roletable表中,存在如下一條記錄
Roleid RoleName
2 admin
那么在RoleRight表中,存在如下形式的記錄
RoleRightId RoleId ModuleFunctionId
1 2 10
2 2 11
即說明,roleid=2的管理員角色,具有moduleidfunctionid=10和11的權(quán)限
接著往下看
3 Module表(模塊表)
字段
moduleid modulename url
1 學(xué)生檔案 xxxxx
2 教師檔案 xxxxxxx
4 ModuleFunction表(模塊-功能表)
字段
modulefunctionid moduleid functionid
.....................
10 1 1
11 1 2
5 function表(功能表)
字段
functionid functioname
1 add
2 update
3 delete
4 search
可以看到,剛才管理員角色擁有的10,11兩個(gè)權(quán)限,可以在modulefunction表中找到,即在moduleid=1(學(xué)生檔案)這個(gè)模塊中擁有兩類
可以執(zhí)行的功能,是什么功能呢?查看functionid可以知道,有add和update的功能了
這樣的好處是,“模塊”,“功能”,“組”,“人”可以任意添加,彼此不受影響。既可以直接為每個(gè)用戶直接賦予權(quán)限,也可以為一類用戶歸到角色,再在角色里統(tǒng)一給權(quán)限。
但實(shí)際上,一般沒多大必要設(shè)立function表去放這些權(quán)限,來來去去都是CRUD這些
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。