如何在Java項(xiàng)目中做RBAC權(quán)限控制?
謝邀!
RBAC,即基于角色的權(quán)限訪問(wèn)控制(Role-Based Access Control)。簡(jiǎn)單地說(shuō),一個(gè)用戶擁有若干角色,每一個(gè)角色擁有若干權(quán)限。這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型。在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對(duì)多的關(guān)系。
在Java web的項(xiàng)目中,一把都會(huì)涉及到權(quán)限管理的,那么,我們應(yīng)該如何去設(shè)計(jì)和實(shí)現(xiàn)權(quán)限管理呢?
首先,就是數(shù)據(jù)庫(kù)的設(shè)計(jì),最少需要4張表,也可以是5張表,加一張表單獨(dú)定義權(quán)限:
用戶表(user)
角色表(role)
角色-權(quán)限表(role_auth)
用戶-角色表(user_role)
我在這里,使用四張表,大概結(jié)構(gòu)如下:
上圖已經(jīng)可以很清晰的看出各表之間的關(guān)系
用戶表:用于保存記錄系統(tǒng)用戶信息
角色表:定義系統(tǒng)所需要的角色,例如:超級(jí)管理員、人事、財(cái)務(wù)等等
用戶角色表:關(guān)聯(lián)用戶表和角色表
用戶權(quán)限表:定義某個(gè)用戶,擁有什么樣的權(quán)限(這里的權(quán)限表可以單獨(dú)定義)