使用者 角色 許可權管理 設計方案之許可權檢測

2022-03-13 21:22:54 字數 1314 閱讀 7131

在管理軟體系統設計中,使用者、角色、許可權管理是不可缺少的三部分,三者具有如下關係:

user : role = 1 : n

role : permission = 1 : n

如將許可權控制到具體的功能模組,又有如下關係:

role : module : permission = 1 : 1 : n

userrole的設計很直觀,就是1:n的關係表,user、role均為主鍵。下面具體談談rolepermission的關係設計。

rolepermission完全可以採用和userrole同樣的設計,但要求role、module、permission三個主鍵,此時處理 role : module : permission的 1 : 1 : n 關係,顯得有些費勁。針對於所有的功能模組,permission 均可劃分為以下幾種:

1. 列表/檢視

2. 新增

2. 修改

4. 刪除

我們可以將「role : module : permission = 1 : 1 : n」 中的「n」想辦法變成「1」。設各許可權值分別如下(2倍等比遞增的關係):

1. 列表/檢視 = 2

2. 新增 = 4

2. 修改 = 8

4. 刪除 = 16

此時的「role : module : permission」中的permission等於上述四種操作許可權中所擁有的許可權值之和,比如:若某個(role + module)擁有檢視、新增、修改、刪除的許可權,則其permission=2+4+8+16=30。

下面進行許可權檢測,判斷「(role + module)」所對應的permission是否包含上述四種操作許可權中的每乙個。解決問題關鍵:使用「&」運算子。比如:

判斷permission是否包含「檢視」的許可權值,就用 if((permission & 2) == 2)

判斷permission是否包含「新增」的許可權值,就用 if((permission & 4) == 4)

判斷permission是否包含「修改」的許可權值,就用 if((permission & 8) == 8)

判斷permission是否包含「刪除」的許可權值,就用 if((permission & 16) == 16)

原理(轉化為二進位制,進行「與」運算):

30 & 2 = 00011110 & 00000010 = 00000010

30 & 4 = 00011110 & 00000100 = 00000100

30 & 8 = 00011110 & 00001000 = 00001000

30 & 16 = 00011110 & 00010000 = 00010000

RBAC使用者角色許可權設計方案

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...

RBAC使用者角色許可權設計方案

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...

擴充套件RBAC使用者角色許可權設計方案

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...