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权限校验
posted @   lytcreate  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示