RBAC
什么是rbac?
-- 基于角色的权限控制 Role-Based Access Control
一个url就代表一个权限 // url分配给角色,角色分配给用户
-- 6个model,4张表
菜单表
name 标题
icon 图标
weight 权重 排序
权限表
title 标题 做显示用
url 正则表达式 str 不加^$ (a标签href属性 )
name url别名 --权限控制到按钮级别
menu 外键关联菜单表
parent 自关联/判断二级菜单的
角色表
name
permissions 多对多关联权限
用户表
name 账号
pwd 密码
roles 多对多关联角色表
manytomany -- django会创建下面2表:
角色和权限的关系表
用户和角色的关系表
流程:
权限控制流程 --
登录
首先经过 中间件 middleware /process_request
获取当前url地址 request.path_info
白名单 settings.py 列表[正则]
校验通过
路由匹配 login 视图函数
login页面
form表单 填用户名 密码 提交POST请求
中间件 白名单 login def post请求 校验账号密码
失败的话拒绝 跳转到重新登录
登录成功 --> 权限信息初始化 -> 函数init_permission(request,obj)
-->获取权限obj.roles.all().filter(permissions__url__isnull=False).values(permissions__跨表).distinct(去重) 过滤非空权限
保存数据到session中,json序列化数字电子字典的key,(注意str)
返回一个跳转location响应头 中间件 get请求 路由匹配 index页面 点击其他 开始真正的权限校验,正则匹配
匹配到了之后(字符串格式化^$),没有匹配到返回HttpResponse('无权限')
匹配成功之后,获取当前权限id和父权限id
权限的校验
-正则匹配
-匹配成功
id 权限的id
pid 父权限的id
有pid 当前访问的是一个子权限
request.current_ment_id = pid
1. request.breadcrumb_list.append({ permission_dict [ str(pid) ] })
2. request.breadcrumb_list.append({ permission_dict [ pname ] })
request.breadcrumb_list.append({ url title })
没有pid 当前访问的是一个父权限 二级菜单
request.current_ment_id = id
路径导航
request.breadcrumb_list.append({ url title })
return HttpResponse('没有权限')
模板 动态生成二级菜单 inclusion_tag menu.html 两次for循环 排序 有序字典 字典也是个类 加()就是实例化
二级菜单class = active
一级菜单 class = '' 第一次循环的时候加了hide
路径导航 inclusion_tag breadcrumb.html 最后一个不可点击的状态
权限控制到按钮级别 --只有filter 能写在if 判断里,其他两个都是标签,-->
在模板里使用 html
{% if request|has_permission:'customer_add' %}
返回布尔值
True 就显示
False 就不显示
RBAC的更多相关文章
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- yii2权限控制rbac之rule详细讲解
作者:白狼 出处:http://www.manks.top/yii2_rbac_rule.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...
- RBAC权限管理
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限. 这样,就构造成“用户-角 ...
- Yii rbac原理和实践
Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...
- RBAC权限模型
RBAC 现在大多数的管理系统都是基于RBAC开发的组织机构权限框架.所有的操作都是基于角色(Role)来完成的.我们先从需求的角度出发,来了解关于系统权限管理. 用户A和用户B都属于研发部,我们可以 ...
- RBAC中 permission , role, rule 的理解
Role Based Access Control (RBAC)——基于角色的权限控制 permission e.g. creating posts, updating posts role A ro ...
- RBAC基于角色的访问控制
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- RBAC模型速记
RBAC Model core concept: user,role,permission,operation,resource user has many roles, assign role to ...
- .NET环境下基于RBAC的访问控制
.NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...
- phpcms中的RBAC权限系统
PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...
随机推荐
- dba工作内容
一.数据库管理员的工作内容 关键词:dba工作内容 转自:http://blog.sina.com.cn/s/blog_44e0d0490102won1.html 1.规划与建设: 1.数据库服务器环 ...
- MySQL 多源复制(Mulit-Source Replication)
MySQL多源复制方案 看复制源Master_1的同步状态:SHOW SLAVE STATUS FOR CHANNEL 'Master_1'\G 查看复制源Master_2的同步状态:S ...
- PS游戏摸拟器ePSXe加速游戏速度方法
1.启动ePSXe游戏摸拟器. 2.菜单栏上的设置->视频->在视频设置窗口 设置主视频插件->设置. 3.在设置插件的窗口帧速率选择框中 勾上使用帧速率限制 点选帧速率限制为(10 ...
- 经典的js返回(退个页面)
<a href="javascript:history.back()">返回</a> <a href="javascript:window. ...
- content_type
1.作用 将app名称与其中表关系进行保存 在models创建表时,关联到ContentType并不会产生实际的字段 2.使用 在models中代码 from django.db import mod ...
- (转)springboot全局处理异常(@ControllerAdvice + @ExceptionHandler)
1.@ControllerAdvice 1.场景一 在构建RestFul的今天,我们一般会限定好返回数据的格式比如: { "code": 0, "data": ...
- maven install安装工程
在一个项目中,想要运行一个子工程,要先把它的依赖工程导入到maven中. 右键依赖工程--run as--maven install.
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(十)使用JRTPLIB传输RTP数据
myRtspClient通过简单修改JRTPLIB的官方例程作为其RTP传输层实现.因为JRTPLIB使用的是CMAKE编译工具,这就是为什么编译myRtspClient时需要预装CMAKE. 该部分 ...
- Jmeter获取响应结果中参数出现的次数
在测试中,有时候会遇到要统计响应结果中某个参数出现了多少次,如果量级很大,一个一个数不太现实,下面讲一下实现自动打印出该参数出现的次数的方法. 例如我的响应信息为:{"ip":&q ...
- python selenium截取指定元素图片
1.截取当前屏幕 @property def getImage(self): ''' 截取图片,并保存在images文件夹 :return: 无 ''' timestrmap = time.strft ...