關於RBAC權限

關於RBAC權限管理

如下圖有三張表,菜單表(sys_menu )角色表(sys_role ) 角色和菜單關係表 (sys_role_menu)
已知角色id=1 查詢角色所擁有的菜單?

select t1.* from sys_menu t1 inner jion sys_role_menu t2 on (t1.id = t2.mid) where t2.rid = 1

在這裏插入圖片描述如下圖所示三張表 角色表(sys_role)用戶表(sys_user) 用戶和角色關係表(sys_role_user)
問:已知用戶id=userid,查詢當前用戶擁有的所有角色

select t1 .* from sys_role inner jion sys_role_user t2 on(t2.rid = t1.id) where t2.uid = userid

其實這個和上面的差不多
那麼問題來了,已知用戶id=userid,查詢當前用戶擁有的所有權限?
這時候我們需要結合
菜單表(sys_menu )
用戶和角色關係表(sys_role_user)
角色和菜單關係表 (sys_role_menu)
首先我們要知道 最終要查的結果在菜單表(sys_menu ) 中
這裏有個問題很重要,在用戶和角色關係表中我們會發現,張三又兩個角色,所以有可能,他的權限會有重複部分,所以我們應該去重,加上(distinct)

select distinct ti.* from sys_menu t1 inner join sys_role_user t2 inner join sys_role_menu t3 on (t1.id = t2.mid and t2.rid = t3.rid) where t3.uid = userid

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章