crm项目和权限管理流程:
- 
拷贝rbac的APP到新的项目中,并且注册 INSTALLED_APPS = [
 ...
 'rbac.apps.RbacConfig'
 ]
 
- 
数据库迁移 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
- 
在根的urlconf中分发rbac的urls.py 
 urlpatterns = [
 url(r'^admin/', admin.site.urls),
 ...
 url(r'^rbac/', include('rbac.urls', namespace='rbac')),
 
 ]
- 
录入信息 http://127.0.0.1:8000/rbac/role/list/ 角色管理 
- 
分配权限 http://127.0.0.1:8000/rbac/distribute/permissions/ 替换用户表 models.User ——》 UserProfile 给角色分配权限 给用户分配角色 
- 
在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'
- 
登录成功后进行权限信息的初始化 from rbac.service.permission_init import permission_init
 permission_init(obj,request)
- 
应用权限的中间件 MIDDLEWARE = [
 ...
 'rbac.middlewares.rbac.RbacMiddleWare'
 ]
- 
动态的二级菜单 {% load rbac %}
 {% menu request %}
 
 引入 css 和 js
 <link rel="stylesheet" href="{% static 'rbac/css/menu.css' %} "/>
 <script src="{% static 'rbac/js/menu.js' %} "></script>
- 
路径导航 {% breadcrumb request %}
- 
权限控制到按钮级别 {% load rbac %}
 
 {% if request|has_permission:'edit_customer' %}
 
 <th>操作</th>
 {% endif %}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号