Web开发中的用户角色权限设计总结
在Web開發(fā)中關(guān)于權(quán)限管理設(shè)計(jì)大抵涉及到兩個(gè)方面:一:功能方面權(quán)限設(shè)計(jì);二:資源方面權(quán)限設(shè)計(jì)。二者比較來看,功能方面權(quán)限的可重用性更高。
1.關(guān)于權(quán)限:
按照角色權(quán)限的最簡單的設(shè)計(jì)
名稱 描述 用戶 不具備管理功能 管理員 具備管理普通用戶的權(quán)限 超級(jí)管理員 具備管理管理員的權(quán)限 上面的設(shè)計(jì)直接將參與系統(tǒng)的用戶分為三類角色:用戶,管理員,超級(jí)管理員。
按照角色權(quán)限,粒度劃分再小些設(shè)計(jì)
名稱 權(quán)限 描述 普通用戶 普通服務(wù) 享有系統(tǒng)有限服務(wù) VIP用戶 高級(jí)服務(wù) 享有VIP服務(wù) 上面是用戶的簡單劃分示例,通過將用戶進(jìn)行權(quán)限劃分,來提供不同的服務(wù)。
名稱 權(quán)限 描述 產(chǎn)品管理員 管理產(chǎn)品模塊 具備產(chǎn)品模塊的管理操作權(quán)限 客戶管理員 管理客戶模塊 具備客戶模塊的管理操作權(quán)限 上面是管理員的簡單劃分示例,通過將后臺(tái)管理員進(jìn)行權(quán)限劃分,使的每一個(gè)管理員角色具備不同的操作權(quán)限,并且不同角色的管理員在管理角色上不存在交叉管理,這樣系統(tǒng)的管理部分才有可能保存清晰,完整,有效。
名稱 權(quán)限 描述 超級(jí)管理員 管理各類管理員 具備最高的管理權(quán)限 系統(tǒng)管理員 管理整個(gè)系統(tǒng),包括管理超級(jí)管理員 系統(tǒng)管理員具備操作整個(gè)系統(tǒng)的最高權(quán)限 上面是系統(tǒng)級(jí)別的管理簡單劃分示例,一個(gè)系統(tǒng)建設(shè)完成后應(yīng)該具備自管理的功能,即:系統(tǒng)環(huán)境配置,模塊管理,使用系統(tǒng)的干系人管理等都可以通過自身的管理模塊完成,而不是人為的修改數(shù)據(jù)或者系統(tǒng)程序。
按照模塊對(duì)角色具備的操作權(quán)限進(jìn)行劃分,粒度將更細(xì)。對(duì)于模塊層的權(quán)限劃分使得系統(tǒng)權(quán)限管理嚴(yán)格,個(gè)角色的智能更加精確,當(dāng)然系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)也相對(duì)復(fù)雜。
2.用戶-角色-權(quán)限的一個(gè)物理模型
設(shè)計(jì)示例圖如下所示:
說明:
a.用戶-用戶角色-角色:可以構(gòu)成一個(gè)用戶角色權(quán)限管理子模塊,即1中最簡單的設(shè)計(jì)。
b.模塊-模塊權(quán)限-權(quán)限:可以構(gòu)成一個(gè)模塊權(quán)限管理子模塊。注:這里的描述有些欠缺,單獨(dú)的看待模塊部分,應(yīng)該描述為模塊-模塊功能-功能更為恰當(dāng)。
c.將a和b同過角色權(quán)限組合在一起就可以構(gòu)成一個(gè)用戶-角色-權(quán)限的按照功能模塊粒度劃分的權(quán)限管理系統(tǒng)。
3.用戶-角色-權(quán)限數(shù)據(jù)庫中表之間的關(guān)聯(lián)關(guān)系說明:
上述數(shù)據(jù)庫表的關(guān)系圖中的每一張表不涉及具體的字段內(nèi)容,所具備的字段都是為了描述各個(gè)表之間的關(guān)聯(lián)關(guān)系。
實(shí)體表:用戶表,角色表,權(quán)限表,模塊表;
中間表:用戶角色,角色權(quán)限,模塊權(quán)限表,用來解決多對(duì)多問題;
角色權(quán)限表:涉及角色具備的權(quán)限,該權(quán)限是來自模塊權(quán)限,也就是符合2中的模塊權(quán)限。
關(guān)于角色權(quán)限表是用戶-角色-權(quán)限系統(tǒng)的一個(gè)可擴(kuò)展口。例如:角色權(quán)限可以和權(quán)限直接關(guān)聯(lián),或者二者之間添加特定場景的其他表。
4.數(shù)據(jù)庫用例數(shù)據(jù),使用用戶-角色-權(quán)限系統(tǒng)
用戶
三個(gè)用戶(標(biāo)識(shí)列[主鍵],用戶編碼,用戶名稱)
角色
四種角色(標(biāo)識(shí)列[主鍵],角色編碼,角色名稱)
用戶角色
用戶角色標(biāo)識(shí)列,用戶編碼,角色編碼即構(gòu)成用戶角色中間表。注:實(shí)際中一個(gè)用戶足矣具備多種角色。
模塊
[模塊標(biāo)識(shí)列,模塊編碼,模塊名稱,父模塊編碼,模塊URL]
說明:
父模塊編碼:用于模塊劃分粒度層次標(biāo)識(shí)
模塊URL:用于模塊在WBE應(yīng)用中的訪問標(biāo)識(shí),當(dāng)然也可以作為他用。
權(quán)限
權(quán)限標(biāo)識(shí),權(quán)限編碼,權(quán)限名稱。
模塊權(quán)限
模塊權(quán)限標(biāo)識(shí)列,模塊編碼,權(quán)限編碼。模塊權(quán)限表在模塊粒度和權(quán)限粒度上對(duì)模塊進(jìn)行的相應(yīng)的權(quán)限設(shè)置,可以簡單表述為:具備在某一模塊上的某種權(quán)限操作。因此將角色和模塊權(quán)限進(jìn)行關(guān)聯(lián)將成為角色具備這一粒度層次上的操作權(quán)限。
角色權(quán)限
角色權(quán)限標(biāo)識(shí)列,角色編碼,模塊權(quán)限編碼
至此,用戶,角色,權(quán)限的劃分就形成了,而且可以通過實(shí)際中需要的用戶,角色,權(quán)限的管理程度,進(jìn)行簡化或者增加表。
5.查詢用戶編碼為400900500的權(quán)限
通過面的SQL語句可以查詢到400900500用戶的權(quán)限。
上述查詢僅僅說明各表之間的數(shù)據(jù)關(guān)聯(lián)關(guān)系,在實(shí)現(xiàn)開發(fā)中這樣的查詢避免使用。
用戶,角色,權(quán)限的一個(gè)很好的參考示例就是Oracle數(shù)據(jù)庫的用戶管理機(jī)制。Web開發(fā)中更多的是涉及到管理用戶,管理員,系統(tǒng)管理,模塊訪問權(quán)限,資源訪問等問題的處理。
關(guān)于用戶角色權(quán)限管理有程序的開發(fā)系統(tǒng),參見如:http://www.oschina.net/p/limiton。
轉(zhuǎn)載于:https://blog.51cto.com/aiilive/1297317
總結(jié)
以上是生活随笔為你收集整理的Web开发中的用户角色权限设计总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。