django怎么自定义权限系统
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容介绍了"django怎么自定义权限系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近项目
千家信息网最后更新 2025年12月03日django怎么自定义权限系统
本篇内容介绍了"django怎么自定义权限系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
最近项目中需要做套权限管理系统,功能需求是对后端当前所有接口添加个权限验证功能,如果用户有访问这个接口权限则返回数据,没有这个接口的权限就提示用户无权访问该接口。属于按钮级别的权限控制。
用户权限管理的思路,对角色进行权限的管理,判断用户属于哪些个角色,这些角色有哪些权限,用户就会有其角色对应的权限。总的来说是基于RABC 权限控制。
权限管理用到的 models 模型有
1.角色模型
2.权限名称模型
3.用户模型
相关模型代码如下:
class PowerDetail(BaseModel):name = models.CharField(verbose_name="权限明细名称", max_length=20)code = models.CharField(verbose_name="权限明细编码", max_length=50, unique=True)class Meta:db_table = "base_power_detail"unique_together = ("code", "name")verbose_name = "角色权限明细"verbose_name_plural = "角色权限明细"ordering = ["id"]def __str__(self):return self.nameclass Role(BaseModel):user = models.ManyToManyField(BaseUser, related_name="roles")name = models.CharField(verbose_name="角色名称", max_length=20)power_detail = models.ManyToManyField(PowerDetail, related_name="roles")class Meta:verbose_name = "用户角色角色"verbose_name_plural = "用户角色"def __str__(self):return self.name
对用户判断权限时是查询 redis ,没有走 mysql 数据库,这样可以减少数据库访问的压力。用户的角色管理和角色的权限管理我是通过django自带的 admin 进行管理。管理用户角色时,通过重写 admin 方法,把用户对应的权限保存到 redis 中。
判断用户是否有权限的代码是通过一个装饰器 check_power 实现的,代码如下:
def check_user_power(user, power_code):"""判断员工是否有 power_code 对应的权限"""return r_db.sismember(get_user_power_key(user), power_code)# 给类方法添加的装饰器def check_power(code):def decode(func):def wrapper(self, request, *args, **kwargs):user = request.login_userif not check_user_power(user, code):return Response({"error": "没有权限操作", "code": 401})res = func(self, request, *args, **kwargs)return resreturn wrapperreturn decodeclass V1VideoClassView(APIView):@check_power(PowerDetailCode.category_label_manage.code)def get(self, request):"""视频分类"""# {"id", "类别名称"}res = [{"id": key, "name": value} for key, value in class_dict.items()]return Response(res)
"django怎么自定义权限系统"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
权限
角色
用户
管理
模型
明细
名称
接口
系统
代码
数据
内容
功能
数据库
方法
更多
知识
控制
实用
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
oracle数据库开启归档
轻量级数据库图片大全
中职生网络安全600字
视频设备管理服务器
大众关服务器
软件开发公司需要什么执照
网络安全教育字词
互联网科技化是什么意思
闪玩网络技术有限公司
数据库电话类型
社会燃烧理论与网络安全
魔电网络技术有限公司
如何快速成为mysql数据库
上海东塔网络安全学院白盒测试
彩虹岛单机版无法连接数据库
济宁优券集网络技术
印度在什么软件开发利用
5G网络技术成熟吗
观冲浪网络安全有感
服务器里搭建网页
同城电商软件开发
培训与软件开发
10个常见的云数据库
惠州无线软件开发维修电话
乡镇卫生院网络安全工作自查报告
数据库怎么修改只读单元格
佰匠聚心网络技术有限公司
服务器搬到太空中的成本是多少
学软件开发有哪些专业
云与服务器安全