import re import jwt from django.http import HttpResponse from TestLaboratory.settings import SECRET_KEY from apps.user.models import User, Role class LogInfo(object): """使用类装饰器来权限校验""" def __init__(self, func): self.func = func def __call__(self, request, *args, **kwargs): token = request.META.get('HTTP_ACCESSTOKEN') SALT = SECRET_KEY payload = jwt.decode(token, SALT, True) user = User.objects.get(username=payload['username']) role = Role.objects.get(id="TestLaboratory_V1_Role_"+str(user.identify+1)) permission = role.permissions.filter(method=request.method) log = None for per in permission: if re.search(per.url, request.path[:-1]): log = per break return self.func(request, *args, **kwargs)