12、基于Django实现RBAC权限管理

1、RBAC概述

RBAC(Role-Based Access Control,基于角色的访问控制),经过角色绑定权限,而后给用户划分角色。数据库

从企业的角度来讲,基本上是按照角色来划分职能。好比,CEO,具备公司全局的权限;部门经理,具备部门全局的权限;部门主管,具备部门部分的权限;普通员工,具备部门一小部分权限。session

不一样的角色,可以获取的资源是不同的,因此RBAC就是按照这个思惟为公司建设权限系统。blog

角色的引入,让权限管理很是灵活。资源

例如:某个员工要离职了,替换他的是一个新员工,这时你须要一一的告诉该新员工他应该作什么,他不能作什么,当工做项很是多的时候,这将是很是繁琐的过程,且很是容易出错。若是你把这个职位定义为某个角色,且为这个角色分配固定的权限,无论来多少新人,无论什么职位,只要他对号入座,权限天然就根据角色分配好。当新员工升职后,好比升职成主管或经理,你这时只是角色变换,权限自动分配给他。io

 

2、流程图

大概流程图以下:登录

一、人员属于某个角色,首先给他分配角色,例如:总监、经理、主管、助理等;sed

二、人员赋予角色后,则给他分配权限,不一样的角色,规定有不一样的权限。好比:总监级别,可以增删改查,无所不能;而经理级别,只能增改查,若是须要删除,则须要总监审批;主管只有增长和查看,修改须要向经理申请,让经理审批。model

三、不一样的权限,其实是对应数据库中的某张表,也就是Django中的某个model。权限

 

 

3、效果图

人员角色分配:im

实现效果:

一、登陆

二、展现权限页面

 经理登陆后,具有增删改查权限。

 主管登陆后,具有增改查权限。

职员登陆后,具有查看权限。

 

4、实现过程

实现流程图:

一、人员登陆后,先验证用户是否OK;

二、验证用户OK后,则根据人员属于什么角色,进行权限获取,并写入session中;

三、用户登陆成功,进入index页面,则根据用户session中的权限,展现不一样的页面,正所谓:千人千面;

四、用户根据不一样的页面,进行不一样的操做。

相关文章
相关标签/搜索