Как вы получаете request.user в Django rest framework в CORS?

Как получить request.user и проверить, аутентифицирован ли пользователь, его имя пользователя или так далее в DRF в среде CORS?

Я новичок в области SPA, одностраничных приложений. Я слышал, что для SPA приложений принято использовать DRF, и теперь я хочу использовать его для аутентификации пользователя, чтобы вернуть другой ответ.

Например, если пользователь является аутентифицированным пользователем с именем пользователя, то возвращает его имя пользователя в json-ответ, или возвращает пустой ответ "", если пользователь не вошел в систему.

Когда это однодоменное окружение, например, клиент: localhost:8000 -> api: localhost:8000/api/requested_user ; DRF может получить состояние своего пользователя.

Но когда это другой домен, например, client: localhost:8080 -> api: localhost:8000/api/requested_user ; , DRF не может получить данные, которые проверяют, вошел ли пользователь в систему.

Например, когда у меня есть следующий urls.py, который обрабатывает запросы API,

# urls.py 

class RequestedUserView(APIView):
    permission_classes = []

    def get(self, request, *args, **kwargs):

        return Response(data={
            "is_authenticated": request.user.is_authenticated,
            "id": request.user.id,
            "username": request.user.username,
            })

    def post(self, request, *args, **kwargs):
        pass 

urlpatterns = [
  path('api/requested_user', RequestedUserView.as_view()),
]

прежний однодоменный запрос (например, :8000 -> :8000) дает нечто похожее на {is_authenticated: true, id: 7, username: 'ami'} когда пользователь клиента входит в систему.

Но последний междоменный запрос (например, :8080 -> :8000) дает ответ, который указывает, что пользователь является anon: {is_authenticated: false, id: null, username: ''}

Как я могу обойти эту проблему? Спасибо.

Вернуться на верх