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