一、RBAC概述
RBAC(Role-Based Access Control,基於角色的訪問控制),通過角色綁定權限,然后給用戶划分角色。
從企業的角度來說,基本上是按照角色來划分職能。比如,CEO,具有公司全局的權限;部門經理,具有部門全局的權限;部門主管,具有部門部分的權限;普通員工,具有部門一小部分權限。
不同的角色,能夠獲取的資源是不一樣的,所以RBAC就是按照這個思維為公司建設權限系統。
角色的引入,讓權限管理非常靈活。
例如:某個員工要離職了,替換他的是一個新員工,這時你需要一一的告訴該新員工他應該做什么,他不能做什么,當工作項非常多的時候,這將是非常繁瑣的過程,且非常容易出錯。如果你把這個職位定義為某個角色,且為這個角色分配固定的權限,不管來多少新人,不管什么職位,只要他對號入座,權限自然就根據角色分配好。當新員工升職后,比如升職成主管或經理,你這時只是角色變換,權限自動分配給他。
二、流程圖
大概流程圖如下:
1、人員屬於某個角色,首先給他分配角色,例如:總監、經理、主管、助理等;
2、人員賦予角色后,則給他分配權限,不同的角色,規定有不同的權限。比如:總監級別,能夠增刪改查,無所不能;而經理級別,只能增改查,如果需要刪除,則需要總監審批;主管只有增加和查看,修改需要向經理申請,讓經理審批。
3、不同的權限,實際上是對應數據庫中的某張表,也就是Django中的某個model。
三、效果圖
人員角色分配:
實現效果:
1、登錄
2、展示權限頁面
經理登錄后,具備增刪改查權限。
主管登錄后,具備增改查權限。
職員登錄后,具備查看權限。
四、實現過程

1、人員登錄后,先驗證用戶是否OK;
2、驗證用戶OK后,則根據人員屬於什么角色,進行權限獲取,並寫入session中;
3、用戶登錄成功,進入index頁面,則根據用戶session中的權限,展示不同的頁面,正所謂:千人千面;
4、用戶根據不同的頁面,進行不同的操作。