saas-export專案-RBAC許可權模型

凡哥的部落格發表於2020-11-01

RBAC許可權模型引入

  • (1)如何設計使用者許可權
    普通的使用者許可權設計
    三個表搞定(使用者表,許可權表,使用者許可權表)
    在這裡插入圖片描述

  • (2)有什麼特點?
    》1 租戶增加,選成會大量的冗餘資料!
    》2 新增或者刪除許可權不方便
    建議使用RBAC許可權模型

RBAC許可權模型介紹

  • (1)什麼是RBAC許可權模型?
    RBAC 是基於角色的訪問控制(Role-Based Access Control )
    在這裡插入圖片描述
  • (2)RBAC許可權模型有什麼特點?
    》》1 先給角色設定許可權
    》》2 再給使用者分配角色
    》》3 最後使用者得到這些角色的許可權
    》》4 如果想知道一個使用者有什麼許可權,則要反過來

SAAX-Export許可權設計

  • (1)五表之間的關係
    角色與許可權: 多對多。(產生一張角色許可權中間表)
    使用者與角色:多對多。(產生一張使用者角色中間表)
    在這裡插入圖片描述
    角色的本質就是一個集合,裡面存放在著許可權的名稱
    給使用者指定角色,其實就是將許可權打包給使用者
  • (2)老王有哪些許可權?
# 5張表
# 使用者表
select * from pe_user;
# 角色表
select * from pe_role;
# 許可權表
select * from ss_module;
# 使用者角色表(中間表) 得知 一個使用者屬於哪個角色
select * from pe_role_user;
# 角色許可權表(中間表) 得知 一個角色有哪些許可權
select * from pe_role_module;


## 隱式內連線
select m.name from pe_user u,pe_role_user ru,pe_role r,pe_role_module rm,ss_module m
where 
u.user_id = ru.user_id 
and ru.role_id = r.role_id 
and r.role_id =  rm.role_id
and rm.module_id = m.module_id
and u.user_name='老王'

## 顯示內連線
select m.name from pe_user u inner join pe_role_user ru inner join pe_role r inner join pe_role_module rm inner join ss_module m
on 
u.user_id = ru.user_id 
and ru.role_id = r.role_id 
and r.role_id =  rm.role_id
and rm.module_id = m.module_id
and u.user_name='老王'

相關文章