django添加装饰器进行登录角色验证
目的:在用户请求各种接口时验证role字段是否不为user
1.创建 装饰器 decorators.py
from django.http import JsonResponse from functools import wrapsfrom utils.token import get_userid from yshop.models import MyUser def check_role(view_func): @wraps(view_func) def wrapper(request, *args, **kwargs): user_token = args[0].META.get('HTTP_AUTHORIZATION') user_id = get_userid(user_token) try: user_info = MyUser.objects.get(user_id=user_id) if user_info.role != 'user': return view_func(request, *args, **kwargs) else: return JsonResponse({'code': 403, 'msg': '权限错误!'}) except Exception as e: return JsonResponse({'code': 405, 'msg': '未知错误,请联系管理员!'}) return wrapper
2.在需要校验的地方引用 @check_role
class DataStatistics(APIView): @check_role def post(self, request): ''' 其他代码 ''' return Response({'code': 200, 'msg': "数据查询成功!"})
如上,对post方法进行role权限校验
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结