django怎么自定义权限系统
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容介绍了"django怎么自定义权限系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近项目
千家信息网最后更新 2025年02月04日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.name
class 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_user
if not check_user_power(user, code):
return Response({"error": "没有权限操作", "code": 401})
res = func(self, request, *args, **kwargs)
return res
return wrapper
return decode
class 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安全错误
数据库的锁怎样保障安全
本土互联网赤子城科技
代理商商城软件开发
服务器安全连接未通过身份验证
戴尔服务器电源不能启动
齐齐哈尔服务器存储
计算机网络安全 本质
网络技术公司是干嘛的
华三服务器接口图
服务器的水
绿书签行动网络安全教育视频
金税数据库
信息网络安全侦查统招升本
新时代大学生如何维护网络安全
网络安全技术培训内容
爱可生数据库自服务平台
网络技术news是什么
钉盘创建协作数据库
互联网安防科技感
北京综合软件开发供应商
网络安全工作制度方案
备案 腾讯云 北京 服务器
连接ecs 数据库
服务器的水
泰安oa办公软件开发电话
网络安全关注的资产
服务器的管理规定
计算机三级网络技术参考用书
csgo怎么确认服务器的vac
strus与数据库
ibm z服务器价格