zoukankan      html  css  js  c++  java
  • crm项目和权限管理流程:

    应用权限组件到其他项目中:

    1. 拷贝rbac的APP到新的项目中,并且注册

       INSTALLED_APPS = [
        ...
           'rbac.apps.RbacConfig'
       ]
       
    2. 数据库迁移

      选择用户表

       class User(models.Model):
           # username = models.CharField(max_length=32, verbose_name='用户名', unique=True)
           # password = models.CharField(max_length=32, verbose_name='密码')
           roles = models.ManyToManyField(Role, verbose_name='用户所拥有的角色', blank=True)
       
           def __str__(self):
               return self.username
       
           class Meta:
               abstract = True  # 该model不会生成对应的表,专门做基类

      使用的用户表要继承rbac的User

       from rbac.models import User
       class UserProfile(User):
       

      执行数据库迁移的命令

       python  manage.py  makemigrations
       python  manage.py  migrate
    3. 在根的urlconf中分发rbac的urls.py

       
       urlpatterns = [
           url(r'^admin/', admin.site.urls),
        ...
           url(r'^rbac/', include('rbac.urls', namespace='rbac')),
       
       ]
    4. 录入信息

      http://127.0.0.1:8000/rbac/role/list/ 角色管理

      http://127.0.0.1:8000/rbac/menu/list/ 权限和菜单的管理

      http://127.0.0.1:8000/rbac/multi/permissions/ 批量录入权限

    5. 分配权限

      http://127.0.0.1:8000/rbac/distribute/permissions/

      替换用户表

      models.User ——》 UserProfile

      给角色分配权限

      给用户分配角色

    6. 在settings中配置权限的相关配置

       # 白名单
       WHITE_LIST = [
           r'^/login/$',
           r'^/reg/$',
           r'^/admin/.*'
       ]
       # 免认证的地址
       NO_PERMISSION_LIST = [
           r'^/index/$',
       
       ]
       
       # 存放权限的session的key
       PERMISSION_SESSION_KEY = 'permission'
       
       # 存放菜单的session的key
       MENU_SESSION_KEY = 'menu'
    7. 登录成功后进行权限信息的初始化

       from rbac.service.permission_init import permission_init
       permission_init(obj,request)
    8. 应用权限的中间件

       MIDDLEWARE = [
        ...
           'rbac.middlewares.rbac.RbacMiddleWare'
       ]
    9. 动态的二级菜单

       {% load rbac %}
       {% menu request %}
       
       引入 css 和 js
       <link rel="stylesheet" href="{% static 'rbac/css/menu.css' %} "/>
       <script src="{% static 'rbac/js/menu.js' %} "></script>
    10. 路径导航

       {% breadcrumb request %}
    11. 权限控制到按钮级别

       {% load rbac %}
       
       {% if request|has_permission:'edit_customer' %}
       
        <th>操作</th>
       {% endif %}
  • 相关阅读:
    在k8s上部署第一个php应用
    在k8s中的基本概念
    kubernetes 环境搭建
    docker搭建私有仓库
    mysql导入数据乱码的解决
    代码单词
    让代码更容易读
    docker中的link
    docker基本
    解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12195266.html
Copyright © 2011-2022 走看看