Как вы получаете 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: ''}
Как я могу обойти эту проблему? Спасибо.