将权限组件应用到新项目

Posted zwq-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将权限组件应用到新项目相关的知识,希望对你有一定的参考价值。

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(rrbac/, 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

以上是关于将权限组件应用到新项目的主要内容,如果未能解决你的问题,请参考以下文章

从片段内请求权限后应用程序崩溃

权限组件应用

底部应用栏在使用片段导航时向上/向下滑动(导航架构组件)

Relay.js 没有正确解析组合片段

gitlab 权限说明

导航组件:将 safeArgs 从活动传递到片段