十二、基于Django实现RBAC权限管理
一、RBAC概述
RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色。
从企业的角度来说,基本上是按照角色来划分职能。比如,CEO,具有公司全局的权限;部门经理,具有部门全局的权限;部门主管,具有部门部分的权限;普通员工,具有部门一小部分权限。
不同的角色,能够获取的资源是不一样的,所以RBAC就是按照这个思维为公司建设权限系统。
角色的引入,让权限管理非常灵活。
例如:某个员工要离职了,替换他的是一个新员工,这时你需要一一的告诉该新员工他应该做什么,他不能做什么,当工作项非常多的时候,这将是非常繁琐的过程,且非常容易出错。如果你把这个职位定义为某个角色,且为这个角色分配固定的权限,不管来多少新人,不管什么职位,只要他对号入座,权限自然就根据角色分配好。当新员工升职后,比如升职成主管或经理,你这时只是角色变换,权限自动分配给他。
二、流程图
大概流程图如下:

1、人员属于某个角色,首先给他分配角色,例如:总监、经理、主管、助理等;
2、人员赋予角色后,则给他分配权限,不同的角色,规定有不同的权限。比如:总监级别,能够增删改查,无所不能;而经理级别,只能增改查,如果需要删除,则需要总监审批;主管只有增加和查看,修改需要向经理申请,让经理审批。
3、不同的权限,实际上是对应数据库中的某张表,也就是Django中的某个model。
三、效果图
人员角色分配:

实现效果:
1、登录

2、展示权限页面
经理登录后,具备增删改查权限。

主管登录后,具备增改查权限。

职员登录后,具备查看权限。

四、实现过程
1、人员登录后,先验证用户是否OK;
2、验证用户OK后,则根据人员属于什么角色,进行权限获取,并写入session中;
3、用户登录成功,进入index页面,则根据用户session中的权限,展示不同的页面,正所谓:千人千面;
4、用户根据不同的页面,进行不同的操作。
十二、基于Django实现RBAC权限管理的更多相关文章
- vue基于d2-admin的RBAC权限管理解决方案
前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-a ...
- Django实现Rbac权限管理
权限管理 权限管理是根据不同的用户有相应的权限功能,通常用到的权限管理理念Rbac. Rbac 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问, ...
- ThinkPHP中RBAC权限管理的简单应用
RBAC英文全称(Role-Based Access Controller)即基于角色的权限访问控制,简单来讲,一个用户可以拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授 ...
- 基于RBAC权限管理的后台管理系统
在摸爬滚打中渐渐理解了RBAC权限管理是个什么玩意. RBAC的基本概念: **RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构成了访问权限三元 ...
- Spring Security实现RBAC权限管理
Spring Security实现RBAC权限管理 一.简介 在企业应用中,认证和授权是非常重要的一部分内容,业界最出名的两个框架就是大名鼎鼎的 Shiro和Spring Security.由于Spr ...
- 基于EasyUI Treegrid的权限管理资源列表
1. 前言 最近在开发系统权限管理相关的功能,主要包含用户管理,资源管理,角色管理,组类别管理等小的模块.之前的Web开发中也用过jQueryEasyUI插件,感觉这款插件简单易用,上手很快.以前用到 ...
- Jenkins配置基于角色的项目权限管理--转
本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...
- 第二十二章 Django会话与表单验证
第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...
- Jenkins配置基于角色的项目权限管理
转自: http://www.cnblogs.com/gao241/archive/2013/03/20/2971416.html, 版权归原作者. 本文将介绍如何配置jenkins,使其可以支持基于 ...
随机推荐
- Linux 系统的/usr目录
/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据:所有系统默认的软件都会放置到/usr, 系统 ...
- java中常用Redis操作
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向 ...
- PHP设计模式系列 - 装饰器
什么是装饰器 装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器设 应用场景 设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息 通过 ...
- 关于使用JQ scrollTop方法进行滚动定位
没图我说个锤子,先来个自拍镇楼. 又到了每周周五总结时间.我广州刘德华又来讲故事了.这一周没啥任务,就一个任务,产品口头交代了两句,也没有psd没有设计图没有样式.自由发挥,你自己敲代码做个作品出来. ...
- JS定时器相关用法
一.定时器在javascript中的作用 1.制作动画 <!DOCTYPE html> <html lang="en"> <head> < ...
- JedisPool无法获得资源问题
线上碰到一个问题:redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the ...
- ROS——rqt
$ rosrun rqt_plot rqt_plot # 画出发布在topic上的数据变化图 $ rosrun rqt_graph rqt_graph #画出node关系图 $ rosrun rq ...
- STM32F103 ucLinux开发BOOT
STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...
- 【VSC】我安装了哪些扩展插件
Nodejs gitk —— 版本实时比对 Debugger for Chrome —— 让 vscode 映射 chrome 的 debug功能,静态页面都可以用 vscode 来打断点调试. ...
- webpack初起步
webpack 用于编译 JavaScript 模块.一旦完成安装,就可以通过 webpack 的 CLI 或 API 与其配合交互. 首先创建一个目录,进入目录中,初始化npm 然后本地安装webp ...