什么是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. Centos安装elasticsearch教程

    elasticsearch安装是ytkah在做laravel电商站内搜索要实现的,通过自己的搜索和学习能力不算很费力解决了.下面就整理一下安装elasticsearch教程,服务器是Centos 7, ...

  2. 初学git

    初学git,总结了一点东西,可能有理解和操作的不到位的地方,还有就是这个是我之前写在word上的,因为CSDN上不能直接上传,所以拷贝的过程中也可能有其他问题.发的的朋友还望指正... 1.找到“参与 ...

  3. JavaScript基础学习2

    /* 1.把函数作为参数.匿名函数作为参数传递到函数 */ function dogEat(food) { console.log("dog eat " + food); } fu ...

  4. Learn golang: Top 30 Go Tutorials for Programmers Of All Levels

    https://stackify.com/learn-go-tutorials/ What is Go Programming Language? Go, developed by Google in ...

  5. Go vs Erlang - 转

    From http://zhang.hu/go-vs-erlang/ Go vs Erlang 因为 云巴 系统对高并发.低延迟的需求,我们对各个语言.平台做了很多的调研比较工作.这自然就包括致力于开 ...

  6. (转载)cmd-命令大全及详解

    原文地址:http://greatverve.cnblogs.com/archive/2011/12/09/windows-cmd.html 命令简介 cmd是command的缩写.即命令行 . 虽然 ...

  7. springmvc注解式开发

    搭建环境 后端控制器无需实现接口,添加相应的注解 springmvc配置文件中无需注册controller springmvc配置文件中添加组件扫描器.注解驱动 涉及常用的注解 @controller ...

  8. 40.SEO----前端该懂的seo技巧

    SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可过分依赖div,对浏览器更友善就能更容易被抓取.2.重要的内容html代码放在前面,放在左边.搜索引擎爬虫是从左往右,从上到下进行抓 ...

  9. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

  10. c#中的模态对话框和非模态对话框

    模态对话框弹出窗口阻止调用窗口的所有消息响应.只有在弹出窗口结束后调用窗口才能继续.在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值. 非模态对话框可以在弹出窗口和调用 ...