使用者 角色 許可權

2021-08-08 14:10:32 字數 1620 閱讀 3206

最近因為要用到許可權這個東西,感覺腦袋很是有點亂,昨天硬是搞到大半夜才終於理清了思路。

現在我就將我的思路和大家分享一下,不敢保證完全正確,大家看看便罷。看看便罷

一般我們使用到 使用者-角色-許可權 這三張表的時候,會發現表裡會有很多字段,然後相對應的外來鍵也是很多,往往我們就容易混亂。現在我這邊列舉的三張表就是最簡單的三張表,僅僅是使用者-角色-許可權三者的關係。

先舉個例子:

使用者1:老王 ——- 經理

角色:超級管理員

許可權:什麼許可權都有1.。。。;2,。。。3.。。。。好多好多

使用者2:小王 ——- 銷售主管

角色:普通管理員a

許可權:1、管理銷售部門人員的流失;2、管理銷售部門人員的業績 ;3、管理銷售部門新人的培訓

使用者3:老李 ——- 很厲害的存在

角色:普通管理員a,管理員aaa

許可權:1、管理銷售部門人員的流失;2、管理銷售部門人員的業績 ;3、管理銷售部門新人的培訓;4、——-;5、——-;6、——-。

ok,我們分析一下,很明顯許可權是相對於角色來說,角色是相對於使用者來說。如果使用者直接對應許可權的話,那麼許可權肯定得不到細化,以及維護都會使得耦合度增加,而且角色的存在也會方便我們的操作。

中間表:

試想一下,我們10個使用者分別對應10角色的話,要是沒有中間表的存在,我們該怎麼建立相對應的關係?

我們中間表就兩個字段,兩個外來鍵分別對應兩個表主鍵

user_role :userid,roleid

role_function:roleid , funcid

下面的將是基於 許可權是相對於角色來說,角色是相對於使用者 的基礎來講

使用者——角色 (manytomany)

首先使用者角色最少會有三張表關係。使用者表(user)、角色表(role)、中間表(user_role)

我們最終目的是查詢出該使用者所擁有的許可權,而許可權依賴角色,那麼我們就先要查詢出該使用者所處的角色

r.id from role r inner join user_role ur onr.id=ur.roleid inner join user u on u.id=ur.userid where u.id=5

這樣我們就通過中間表查詢出該使用者所處的角色的id (r.id=5,6,7)

角色——許可權(manytomany)

角色表(role)、許可權表(function)、中間表(role_function)

上面我們已經將使用者所處的角色的id已經查詢出來,那麼我們就可以通過角色的id查詢出該使用者的許可權了

from function f inner join role_function uf on f.id=uf.funcid inner join role r on r.id=uf.roleid where r.id in(『5』,』6』,』7』)

現在該使用者所處的許可權就已經查詢出來

慢慢想一下,其實就這麼簡單,難得可比這複雜不知道多少倍。

有不足之處還請大家多多指正,謝謝!

使用者角色許可權

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

使用者角色許可權

1 使用者表 sys user idorg id login name password user name phone email create time login time 主鍵id 組織id 使用者登陸名 使用者密碼 使用者姓名 手機號電子郵箱 建立時間 登陸時間 2 角色表 sys rol...

建角色,使用者,許可權

建角色,使用者,許可權 示例說明 示例在資料庫pubs中建立乙個擁有表jobs的所有許可權 擁有表titles的select許可權的角色r test 隨後建立了乙個登入l test,然後在資料庫pubs中為登入l test建立了使用者賬戶u test 同時將使用者賬戶u test新增到角色r tes...