可以使用acl控制實現(xiàn),參考acl全集如下:
創(chuàng)新互聯(lián)建站總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護、公眾號搭建、微信小程序、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!
1、角色表
角色id - 用戶組id - 特殊權(quán)限id(其中特殊權(quán)限 用戶組所包含權(quán)限)
2、用戶組表
用戶組id - 用戶組信息
3、權(quán)限表
權(quán)限表id - 權(quán)限信息 - 與功能模塊的關(guān)系
4、用戶組-權(quán)限關(guān)聯(lián)表
用戶組id - 權(quán)限集合
5、特殊權(quán)限表
特殊權(quán)限id - 權(quán)限集合
注意:
1、設(shè)置權(quán)限的刪除、添加主要圍繞在 用戶組-權(quán)限關(guān)聯(lián)表、特殊權(quán)限表。
2、用戶的權(quán)限獲取則是驗證登陸的時候通過用戶組和特殊權(quán)限獲取權(quán)限集合。
3、展示的時候,根據(jù)2獲取的權(quán)限集合從權(quán)限表獲取所有功能模塊的導(dǎo)航菜單。
另一種方法是參數(shù)表,適用于固定參數(shù),只判斷bool的
例如
用戶 讀 寫 執(zhí)行
abc Y Y Y
cba Y N N
zzz Y Y N
那么
abc=7(二進制 111)
cba=1(二進制 001)
zzz=3(二進制 011)
例如論壇,權(quán)限都是固定的參數(shù)值,每個人區(qū)別只是 有/無 某個權(quán)限
*要注意的參數(shù)是64位/32位的問題——避免溢出
說一下我的思路(RBAC 模式),供你參考,郵箱不發(fā)了,由于數(shù)據(jù)庫需要保密,截圖也不貼了。
你在左側(cè)導(dǎo)航欄做三個菜單項,分別是:
1. 用戶管理
2. 角色管理
3. 權(quán)限管理
其中 1 和 2 給管理員操作,管理員可以對其進行增刪改查等操作;3 由軟件開發(fā)者操作,不能分配給管理員;普通用戶對 1、2、3 都無權(quán)操作。
權(quán)限管理界面,軟件開發(fā)者可以對各種權(quán)限進行增刪改查;
角色管理界面,管理員進去后可以對角色進行增冊改查操作;具體可以這樣安排界面,右欄主區(qū)分成上中下三塊,上面這塊提供添加及查詢操作,中間塊顯示查詢結(jié)果,下面這塊查詢結(jié)果中某條記錄的明細(xì)。 增加按鈕點擊后,在明細(xì)區(qū)出現(xiàn)填寫表單,具體需要填哪些內(nèi)容由開發(fā)者定,一般角色名為必填項,然后同時在右邊給出一個選擇權(quán)限的列表,提供復(fù)選框讓管理員為角色勾選分配權(quán)限;
用戶管理界面跟角色界面類似,只是管理員在創(chuàng)建用戶時是勾選角色而不是權(quán)限。
大體思路就是這樣。
(PS: 數(shù)據(jù)庫中當(dāng)然要先設(shè)計好用戶表、角色表、權(quán)限表、用戶角色關(guān)聯(lián)表、角色權(quán)限關(guān)聯(lián)表等等)
其實不建議用session參與權(quán)限模塊
1.session用來記錄當(dāng)前用戶名,用戶編碼,角色編碼,職位編碼等等當(dāng)前用戶的基本配置信息.
2.控制權(quán)限的類獲取session中的信息后,在根據(jù)你數(shù)據(jù)庫中權(quán)限表做控制.