zoukankan      html  css  js  c++  java
  • rbac组件引用

    一. 批量操作思路

    # 待新增  路由系统中有,但是数据库中还没有
        路由系统的集合 - 数据库中权限集合
    
    # 待更新  路由系统中有,数据库中也有, 只是更改了一些信息
        路由系统的集合 & 数据库中的权限集合
    
    # 待删除  数据库中有,路由中没有的
        数据库权限集合 - 路由系统集合

    二 . 权限组件的应用

            1. 拷贝rbac APP到新的项目中 并且要在settings中注册
            2. 数据库迁移
                1. 用户表的继承
                    class User(models.Model):
                    """
                    用户表
                    """
                    # 这个Role一定不能是字符串,而且这个Role这张表一定要写到User的上边,这样从上到下加载的时候才能引用到这个类
                    
                    roles = models.ManyToManyField(Role, verbose_name='用户所拥有的角色', blank=True) #Role不用字符串的形式  用类的方式
                    
                    class Meta:
                        abstract = True   # 当前的表不会在数据库中生成,用于作为基类,让子类继承
                2. 清除掉rbac下migrations的除了__init__之外的所有py文件,而且admin中用到了User表也要注释掉
                3. 执行数据库迁移的命令
            
            3. rbac的路由配置
                    url(r'rbac/', include('rbac.urls',namespace='rbac')),
                    
            4. 权限信息的录入
                录入角色
                录入一级菜单
                录入权限信息
                    批量操作  注意: 所有的url要有name
                权限的分配
                    注意  使用正确的用户表
                    给角色分配权限
                    给用户分配角色
                
                    
            5. 应用上中间件
                在settins中注册中间件
                MIDDLEWARE = [
                            ... 
                            'rbac.middlewares.rbac.RbacMiddleWare',
                        ]
                        
                在settins中加上权限的相关配置
            6. 登录成功进行全新信息的初始化
                from rbac.service.permission import init_permission
                登陆成功后
                    init_permission(request,obj)
                    
            7. 应用二级菜单
                {% load rbac %}
                {% menu request %}
                
                应用css js 
                   <link rel="stylesheet" href="{% static 'rbac/css/menu.css' %} "/>
                   <script src="{% static 'rbac/js/menu.js' %} "></script>
                   
            8. 路径导航
                {% breadcrumb request %}
                
                
            9. 权限粒度控制到按钮级别
                {% load rbac_tags %}
                {% if request|has_permission:'class_add' %}
                    <a class="btn btn-success btn-sm" style="margin: 3px" href="{% url 'class_add' %}"> <i
                            class="fa fa-plus-square"></i> 添加 </a>
                {% endif %}
  • 相关阅读:
    leetcode 451 根据字符出现频率排序
    leetcode 1833 雪糕的最大数量
    leetcode 166 Excel表列名称
    877 石子游戏
    01 背包问题
    正则表达式
    leetcode 160 相交链表
    git 备忘录
    leetcode 525 连续数组
    Mysite
  • 原文地址:https://www.cnblogs.com/attila/p/10601133.html
Copyright © 2011-2022 走看看