什么是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的更多相关文章

  1. yii2的权限管理系统RBAC简单介绍

    这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...

  2. yii2权限控制rbac之rule详细讲解

    作者:白狼 出处:http://www.manks.top/yii2_rbac_rule.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...

  3. RBAC权限管理

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联. 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限. 这样,就构造成“用户-角 ...

  4. Yii rbac原理和实践

    Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...

  5. RBAC权限模型

    RBAC 现在大多数的管理系统都是基于RBAC开发的组织机构权限框架.所有的操作都是基于角色(Role)来完成的.我们先从需求的角度出发,来了解关于系统权限管理. 用户A和用户B都属于研发部,我们可以 ...

  6. RBAC中 permission , role, rule 的理解

    Role Based Access Control (RBAC)——基于角色的权限控制 permission e.g. creating posts, updating posts role A ro ...

  7. RBAC基于角色的访问控制

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...

  8. RBAC模型速记

    RBAC Model core concept: user,role,permission,operation,resource user has many roles, assign role to ...

  9. .NET环境下基于RBAC的访问控制

    .NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息 ...

  10. phpcms中的RBAC权限系统

    PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...

随机推荐

  1. svn介绍

    什么是SVN(Subversion) Svn(subversion)是近年来崛起非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统.Svn版本管理工具随着时间改变的各 ...

  2. mysql主从调优

    mysql主从同步调优 常用选项 适用于Master服务器 binlog-do-db=name 设置Master对哪些库记日志 binlog-ignore-db=name 设置Master对哪些库不记 ...

  3. 晨枫U盘启动盘制作工具V4.0-安装原版XP的方法

    [1]进入第一个PE后找到我们事先准备好的xp光盘iso镜像,右键点击加载虚拟磁盘(也可以利用虚拟光驱来加载或者直接用右键里的RAR解压到本地硬盘分区) [2]打开桌面上的windows安装工具,wi ...

  4. react 脚手架--create-react-app

    1.yarn add -g create-react-app 2.create-react-app demo cd demo yarn start 可以跑起来整个项目了 一般都会用到路由,需要 yar ...

  5. spring——事务管理

    1.spring支持编程式事务管理和声明式事务管理. 编程式事务管理:编程式事务管理使用TransactionTemplate或者直接使用最底层的PlatformTransactionManager. ...

  6. configure.in详解

    configure.in文件里基本的内容就是一系列的m4宏,在运行时根据传递给它们的参数,定义的宏就会扩展为shell的脚本代码段.也可以手工书写shell代码.不过我们就不说这个了,要想完全的理解c ...

  7. Python才排第8名!2018增速最快TOP 10编程语言盘点

    在技术前沿的硅谷,开发者们不仅要学习多种热门的编程语言,还要时时盯着新的编程语言的崛起,生怕自己掉队. 作为世界最大开源软件社区,Github每年都会发布年度Octoverse报告,向大家展示年度最流 ...

  8. Sql注入基础原理介绍

    说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...

  9. Go linux 实践4

    这是目前学习的最难的Go demo例子 ***************************************** 如果能看懂,你就出师了,我的任务也就结束了 **************** ...

  10. Jenkins自动化构建(一)执行selenium+python脚本

    Jenkins执行python写的selenium自动化脚本,通常会遇到,执行打不开浏览器,查看jenkins构建Console Output控制台输出信息,发现脚本是执行了的,但是出错了,打开浏览器 ...