Django - Почему пользователь не прошел IsAdminUser, но django не выбрасывает исключение unauth?
Вот мой пример кода использования Token Authen:
class test_api(generics.GenericAPIView):
permission_classes = (IsAdminUser, IsAuthenticated)
def get(self,request):
return HttpResponse("You call random test api")
Я использую Token Authen, с моим заголовком запроса следующим образом, это Token НЕ AdminUser
Authorization : Token fc823d7a1d8973056e11e9c8b974f17e351c4263
Когда я вызываю api, он выводит из терминала эти строки
False
[23/Aug/2021 10:39:20] "GET /user/get-user HTTP/1.1" 200 13
Я предполагаю, что False
получил распечатку из разрешения IsAdminUser
. Однако код по-прежнему отвечает 200 и дает мне ответ You call random test api
.
Только когда я указываю неправильный токен, я получаю ответ 403 Unauth.
Как документировано:
Класс разрешения
IsAdminUser
будет запрещать разрешение любому пользователю, если толькоuser.is_staff
не являетсяTrue
, в этом случае разрешение будет разрешено.
Таким образом, похоже, что пользователь для токена is_staff
установлен на True
. Вы можете подтвердить это, добавив следующие строки в ваш get()
def get(self, request):
print("request.user.is_staff", request.user.is_staff)
return HttpResponse("You call random test api")