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 %}

 

posted @ 2019-03-26 16:41  一个很善良的抱爱  阅读(194)  评论(0编辑  收藏  举报