django后台权限管理(基于角色控制管理)

组件源码:https://github.com/skxgood03/rbac
#
### 使用自定义rbac权限组件 1. 拷贝rbac组件 2. 清空migration目录 3. 在setting注册rbac ```python 'rbac', #django 2.0以上 ``` 4. 数据库迁移录入信息 5. 创建超级管理,添加权限信息(组件admin.py已经定制化) 6. 用户登录后做权限和菜单的初始化 `init_permission` ```python from web import models from rbac import models #调用自定义权限和菜单组件 from rbac.service.init_permission import init_permission def login(request): ''' 登录代码,成功后调用init_permission传入request、登录用户信息(obj) ''' if request.method == 'GET': return render(request,'login.html') name=request.POST.get('name') pwd=request.POST.get('pwd') obj = models.UserInfo.objects.filter(name=name,password=pwd).first() if not obj: return render(request,'login.html',{'msg':'用户名密码错误'}) request.session['user_info'] = {'id':obj.id,'name':obj.name} init_permission(request,obj) return redirect('/customer/list/') ``` 7. 应用中间件,进行权限校验 ```python 'rbac.middleware.rbac.RbacMiddleware' ``` 8. 设置setting配置文件 ```python #############权限相关####################### PERMISSION_SESSION_KEY = 'permissions_list' MENU_SESSION_KEY = 'menu_list' #白名单 VALID_URL = [ '^/login/$', '^/admin/.*', ] ``` 9. 显示动态菜单(引入静态文件)、在菜单栏 `+{% menu request %}`、最上方导入`{% load rbac %}` 10. 粒度控制到按钮 1. ```python #加在需要控制的按钮上 {% if request|has_permission:'add' %} <td><a href="{% url 'add' %}">增加</a></td> {% endif %} ``` 2.

 

posted @ 2021-05-16 13:58  史可轩  阅读(645)  评论(0编辑  收藏  举报
3 4