request.user.id является нулевым в ModelViewSet - PullRequest
0 голосов
/ 11 марта 2020

Когда я пытаюсь получить активный идентификатор пользователя с помощью request.user.id, он всегда равен нулю:

@action(methods=['get'], detail=False)
def instructor_detail(self, request):
    response_data = {}
    instructor = InstructorRepository.getInstructor(request.user.id)
    response_data["data"] = {"user_id": request.user.id, "detail": instructor.get("detail")}

Когда я тестирую этот метод (getInstructor) с идентификатором, он работает. Проблема в том, что request.user.id всегда имеет значение null, даже при отсутствии проблемы с входом в систему, связанной с аутентификацией на основе JWT.

Что я должен проверить?

1 Ответ

0 голосов
/ 11 марта 2020

Я нашел ответ. Мой метод был под InstructorView, который не вызывает никаких классов разрешений.

Я думаю, что представления без какого-либо класса разрешений не предоставляют данные request.user, это правда?

class InstructorView(viewsets.ModelViewSet):  
    permission_classes = ()
    authentication_classes = ()

Поэтому я переместил метод в другое представление с классом разрешений:

class InstructorAdminView(viewsets.ModelViewSet):
    permission_classes = (IsAuthenticated, IsAdminUser, )
    authentication_classes = (JSONWebTokenAuthentication, )

Теперь я могу получить доступ к идентификатору пользователя ... но я до сих пор не знаю точной причины.

...