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 %}
  • 相关阅读:
    堆排序算法(C#实现)
    在 .NET 2.0 中享受 .NET 3.0的特性
    火花:使用文件管理功能管理我的连接
    我们可以做的更好
    有价值的文章
    网上掏宝
    WPF绑定技术一步步学
    结构类型需要重载GetHashCode和Equals
    关于扩展Visual Studio 2005的相关资料
    插件模型应该考虑的问题
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12195266.html
Copyright © 2011-2022 走看看