装饰器实现JWT校验认证

def logging_check(func):
    def wrap(request, *args,**kwargs):
        token = request.META.get('HTTP_AUTHORIZATION')
        if not token:
            result = {'code':403,'error:'please login')
            return JsonResponse(result)
        except Exception as e:
            print('jwt decode error is %s'%e)
            result = {'code':403,'error':'please login'}
            return JsonResponse(result)
        username = res['username']
        user = User.object.get(username=username)
        # request 传给了视图函数,最好起名有个性,比如myuser,如果是user可能会出莫名其妙的错误
        # 在视图函数中直接request.myuser拿来用就可以了
        request.myuser = user

        return func(request, *args, **kwargs)
    return wrap

method_decorator 可以将函数装饰器转换成方法装饰器。在某个视图类中的post或者put方法上挂上去用。

posted @ 2021-09-08 13:20  kopok  阅读(101)  评论(0编辑  收藏  举报