近日在閱讀一本asp.net的書時(shí)(國人寫的),其中提到了一個(gè)簡易權(quán)限的小例子,感覺說的還是比較清楚,有點(diǎn)代表性, 故在此簡單介紹下其實(shí)現(xiàn)原理 其核心是建立起用戶、角色,功能,模塊功能四者的關(guān)系。數(shù)據(jù)庫設(shè)計(jì)如下 1 用戶角色表 User表 字段:userid 自遞增字段 username password RoleTable表(角色表) 字段 Roleid 自遞增字段 RoleName 用戶角色表 UserRole 字段 UserRoleid(自遞增字段) userid roleid 用戶表和角色表通過用戶角色表進(jìn)行關(guān)聯(lián),用戶和角色之間的關(guān)系是多對多 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這些 |
|