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.

 


__EOF__

本文作者流川枫
本文链接https://www.cnblogs.com/xxks/p/14773738.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   史可轩  阅读(660)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
3 4
点击右上角即可分享
微信分享提示