将权限组件应用到新项目

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

 

  1. 拷贝rbac组件到新的项目中,注册app

  2. 修改用户表,继承rbac中的User

posted @ 2019-01-06 16:19  清风_Z  阅读(199)  评论(0编辑  收藏  举报