django怎么自定义权限系统
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"django怎么自定义权限系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近项目
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
互联网与科技
上海挚品互联网科技有限公司
互联网科技公司简介
工业互联网科技新基建
互联网 科技创新
善班互联网科技有限公司
互联网科技的未来发展
互联网科技美容
长亮科技 互联网金融
中化能源互联网科技招聘
互联网经济与金融科技
互联网科技扶贫时间
互联网科技大赛获奖感言
北京市互联网新科技
互联网科技资金流入
21世纪互联网科技成就
湖北辰鑫科技互联网
互联网公司属于科技吗
互联网时代高科技布局
科技平台互联网
新华互联网科技学院
智网互联网科技
互联网科技作文
科技大学互联网专业好不好
中国航天科技大学国际工业互联网
消费医药和互联网科技
广州百诚互联网科技有限公司官网
本届互联网大会上的黑科技
福州德业互联网科技