RBAC(Role-Based Access Control,基於角色的訪問控制),就是用戶通過角色與權限進行關聯。簡單地說,一個用戶擁有若干角色,每一個角色擁有若干權限。這樣,就構造成“用戶-角色-權限”的授權模型。在這種模型中,用戶與角色之間,角色與權限之間,一般者是多對多的關系。
在系統訪問中,最終判斷的是當前用戶擁有哪些權限,以使用相關的權限進行業務處理。
在RBAC中,共有用戶、部門、權限、角色四個概念,部門是用戶的集合,角色是權限的集合;用戶可以擁有不同的權限和角色,部門也可以擁有不同的權限和角色;權限擁有上下級關系,並且在系統中可以有業務權限與數據權限兩類;部門擁有上下級關系,此設計方式沒有對權限進行繼承;部門和用戶是一對多的關系,一個部門中可以有多個用戶,一個用戶只允許屬於一個部門。
數據表結構如下:
1.用戶表
表名:t_user |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
user_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
login_name |
varchar(255) |
|
必填 |
登錄用戶名 |
login_pass |
varchar(255) |
|
必填 |
密碼 |
org_id |
varchar(32) |
外鍵 |
必填 |
所屬機構ID |
user_name |
varchar(255) |
|
必填 |
真實姓名 |
user_phone |
varchar(255) |
|
|
電話號碼 |
user_email |
varchar(255) |
|
|
|
create_date |
varchar(10) |
|
必填 |
創建日期 |
create_time |
varchar(8) |
|
必填 |
創建時間 |
create_user |
varchar(32) |
外鍵 |
必填 |
創建人 |
2.機構表
表名:t_organization |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
org_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
org_name |
varchar(255) |
|
必填 |
機構名稱 |
org_code |
varchar(255) |
|
|
機構編碼 |
org_header |
varchar(255) |
|
|
機構負責人 |
parent_id |
varchar(32) |
表內外鍵 |
必填 |
上級機構ID,根機構的ID為空 |
create_date |
varchar(10) |
|
必填 |
創建日期 |
create_time |
varchar(8) |
|
必填 |
創建時間 |
create_user |
varchar(32) |
外鍵 |
必填 |
創建人 |
3.權限表
表名:t_right |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
right_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
right_name |
varchar(255) |
|
必填 |
權限名稱 |
right_code |
varchar(255) |
|
|
權限編碼 |
parent_id |
varchar(32) |
表內外鍵 |
必填 |
父權限ID, 根權限的ID為空 |
create_date |
varchar(10) |
|
必填 |
創建日期 |
create_time |
varchar(8) |
|
必填 |
創建時間 |
create_user |
varchar(32) |
外鍵 |
必填 |
創建人 |
4.用戶權限關系表
表名:t_user_right |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
ur_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
user_id |
varchar(32) |
外鍵 |
必填 |
用戶ID |
right_id |
varchar(32) |
外鍵 |
必填 |
權限ID |
5.機構權限關系表
表名:t_org_rigth |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
or_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
org_id |
varchar(32) |
外鍵 |
必填 |
機構ID |
right_id |
varchar(32) |
外鍵 |
必填 |
權限ID |
6.角色表
表名:t_role |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
role_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
role_name |
varchar(255) |
|
必填 |
角色名稱 |
create_date |
varchar(10) |
|
必填 |
創建日期 |
create_time |
varchar(8) |
|
必填 |
創建時間 |
create_user |
varchar(32) |
外鍵 |
必填 |
創建人 |
7.用戶角色關系表
表名:t_user_role |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
ur_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
user_id |
varchar(32) |
外鍵 |
必填 |
用戶ID |
role_id |
varchar(32) |
外鍵 |
必填 |
角色ID |
8.機構角色關系表
表名:t_org_role |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
or_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
org_id |
varchar(32) |
外鍵 |
必填 |
機構ID |
role_id |
varchar(32) |
外鍵 |
必填 |
角色ID |
9.角色權限關系表
表名:t_role_right |
||||
字段名稱 |
字段類型 |
主外鍵 |
是否必填 |
備注 |
rr_id |
varchar(32) |
主鍵 |
必填 |
主鍵 |
role_id |
varchar(32) |
外鍵 |
必填 |
角色ID |
right_id |
varchar(32) |
外鍵 |
必填 |
權限ID |