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