一、RBAC概述
RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色。
从企业的角度来说,基本上是按照角色来划分职能。比如,CEO,具有公司全局的权限;部门经理,具有部门全局的权限;部门主管,具有部门部分的权限;普通员工,具有部门一小部分权限。
不同的角色,能够获取的资源是不一样的,所以RBAC就是按照这个思维为公司建设权限系统。
角色的引入,让权限管理非常灵活。
例如:某个员工要离职了,替换他的是一个新员工,这时你需要一一的告诉该新员工他应该做什么,他不能做什么,当工作项非常多的时候,这将是非常繁琐的过程,且非常容易出错。如果你把这个职位定义为某个角色,且为这个角色分配固定的权限,不管来多少新人,不管什么职位,只要他对号入座,权限自然就根据角色分配好。当新员工升职后,比如升职成主管或经理,你这时只是角色变换,权限自动分配给他。
二、流程图
大概流程图如下:
1、人员属于某个角色,首先给他分配角色,例如:总监、经理、主管、助理等;
2、人员赋予角色后,则给他分配权限,不同的角色,规定有不同的权限。比如:总监级别,能够增删改查,无所不能;而经理级别,只能增改查,如果需要删除,则需要总监审批;主管只有增加和查看,修改需要向经理申请,让经理审批。
3、不同的权限,实际上是对应数据库中的某张表,也就是Django中的某个model。
三、效果图
人员角色分配:
实现效果:
1、登录
2、展示权限页面
经理登录后,具备增删改查权限。
主管登录后,具备增改查权限。
职员登录后,具备查看权限。
四、实现过程

1、人员登录后,先验证用户是否OK;
2、验证用户OK后,则根据人员属于什么角色,进行权限获取,并写入session中;
3、用户登录成功,进入index页面,则根据用户session中的权限,展示不同的页面,正所谓:千人千面;
4、用户根据不同的页面,进行不同的操作。