Django - Как объединить промежуточное ПО Authen и мое собственное промежуточное ПО?
У меня есть api, который требует Token
в заголовках и пользователи должны иметь роль is_staff
для обработки.
Вот моя model.py
просьба прояснить насчет is_staff
роли
class User(AbstractBaseUser, PermissionsMixin):
"""Custom user model that support using email instead of username"""
email = models.EmailField(max_length=255, unique=True)
name = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_employee = models.BooleanField(default=True)
objects = UserManager()
USERNAME_FIELD = 'email'
Вот api в моем views.py
class get_user_info_from_token(generics.GenericAPIView):
permission_classes = (IsAuthenticated, )
def get(self, request):
""" I put the below rows in middleware
User = Token.objects.get(key = request.auth).user
if User.is_staff:
"""
return HttpResponse("You are staff)
Вот мое промежуточное ПО:
class CustomMiddlware(object):
...
def __call__(self, request):
token = request.headers['Authorization'][6:]
user = Token.objects.get(key=token).user
if user.is_staff:
response = self.get_response(request)
else:
return HttpResponseForbidden("You are not allowed")
...
У меня есть 2 вопроса:
1/ Я хочу поместить permission_classes = (IsAuthenticated, )
в мою промежуточную программу, чтобы упростить мой код. Но я не знаю, как это сделать.
2/ Более того, в моем промежуточном ПО я не могу запустить User = Token.objects.get(key = request.auth).user
, так как получил эту ошибку AttributeError: 'WSGIRequest' object has no attribute 'auth'
.