1. 拷贝rbac组件到新的项目中,注册app
2. 修改用户表,继承rbac中的User
class User(models.Model): """ 用户表 """ # name = models.CharField(max_length=32, verbose_name='名称') # password = models.CharField(max_length=32, verbose_name='密码') roles = models.ManyToManyField(Role, verbose_name='用户拥有的角色', blank=True) # def __str__(self): # return self.name class Meta: abstract = True # 数据库迁移时候不会生成表,用来做基类 class UserProfile(User, models.Model):
3.执行数据库迁移命令
1.删除rbac下的migrations中的记录
2. 注掉admin中的User表
3.roles = models.ManyToManyField(Role, verbose_name='用户拥有的角色', blank=True) # 关联的字段不要写成字符串形式
4.设置rbac的url
url(r'rbac/', include('rbac.urls',namespace='rbac'))
5.菜单管理
6.权限的录入
1.所有的url要有别名name
2.不要忽略rbac namespace
3.注意url和别名的长度
4.构建层级结构
7.角色管理
8. 分配权限
1.注意用新的用户表替换rbac中的User
2.给不同角色分配权限
3.给不同用户分配角色
9.应用上权限
1.应用中间件 在settings中写上权限的配置
# 权限的key PERMISSION_SESSION_KEY = 'permissions' # 菜单的key PERMISSION_MENU_KEY = 'menus' WHITE_LIST = [ r'^/login/$', r'^/reg/$', r'^/admin/.*', ] NO_PERMISSION_LIST = [ r'^/index/$', r'^/logout/$', ] # 路径导航 BREADCRUMB = 'breadcrumb_list' # 路径导航 CURRENT_MENU = 'current_parent_id'
2.登陆成功后权限的初始化
from rbac.service.permission import init_permisson # 权限信息的初始化 init_permisson(request,obj)
10.动态生成二级菜单
1.在母版中使用
```
导入CSS js
{% load rbac %}
{% menu request %}
```
11.应用路径导航
{% breadcrumb request %}
12.权限控制到按钮级别
{% load rbac %} {% if request|has_permission:"consult_add" %} <a href="{% url 'consult_add' %}" class="btn btn-primary btn-sm">添加</a> {% endif %}
-
-
修改用户表,继承rbac中的User