zoukankan      html  css  js  c++  java
  • CRM rbac 组件的应用

    1 拷贝 rbac 组件到项目中,注册这个app

    2 数据库迁移

      1 删除rbac下migrations里除了init外的文件

      2 修改用户表

    class User(models.Model):
        """
        用户表
        """
        # name = models.CharField(max_length=32, verbose_name='用户名')
        # pwd = models.CharField(max_length=32, verbose_name='密码')
        roles = models.ManyToManyField(Role, blank=True)   # 关联用类
    
        class Meta:
            abstract = True     # 执行数据库迁移命令时不会生成具体的表,这张表做基类
    在新项目中用户表要继承User表

    之后执行数据迁移命令

    在根的 urlconf 中添加 rbac 的路由

    url(r'rbac/', include('rbac.urls', namespace='rbac'))
    
    namespace -- 命名空间

    4 角色管理  添加角色

    5 菜单管理  给权重(改变菜单显示顺序)

    6 权限管理

      录入权限信息

      分配好菜单和父权限

    7 分配权限

      给角色分配权限

      给用户分配角色

    8 加上权限的控制

      加中间件

      权限的配置放在settings中

    # 权限存放在session中的KEY
    PERMISSION_SESSION_KEY = 'permission'
    
    # 菜单存放在session中的KEY
    MENU_SESSION_KEY = 'menu'
    
    # 白名单 WHITE_LIST
    = [ r'^/login/$', r'^/reg/$', r'^/admin/.*', ] # 需要登录但是不要权限的名单 NO_PERMISSION_LIST = [ r'^/index/$', ]

      修改登录函数

      校验成功后权限信息的初始化

    from rbac.service.permission import init_permission
    # 登录成功后
    init_permission(request,obj)

    9 应用上二级菜单

      母版中使用 menu  inclusion_tag

     {% load rbac %}
       {% menu request %}

      引入 css js 效果

    10 路径导航  -- breadcrumb

    {% breadcrumb request %}

    11 权限控制到按钮

    {% load rbac %}
    {% if request|has_permission:'add_customer' %}
        <a class="btn btn-sm btn-primary" style="margin-bottom: 5px"
           href="{% reverse_url request 'add_customer' %}">添加</a>
    
    {% endif %}
  • 相关阅读:
    【NS2仿真】TCP协议
    【NS2仿真】UDP协议
    windows pip 安装 whl文件
    数据预处理
    记录一次gitbush 在windows上的使用
    记一次Linux向服务器传war过程
    Java 字符串String(一)拆分
    web基础知识(三)关于ajax,Jquery传值最基础东西
    web基础知识(二)关于ajax,Jquery传值最基础东西
    web基础知识(一)关于ajax传值最基础东西
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10459327.html
Copyright © 2011-2022 走看看