Почему request.user является анонимным в Django RedirectView?

#python #reactjs #django #redirect #django-rest-framework

#python #reactjs #django #перенаправление #django-rest-framework

Вопрос:

Есть много вопросов, похожих на этот, но ни один из них не отражает ситуацию, в которой я нахожусь. Я кодирую приложение Django / React и интегрировался с Spotify. В настоящее время на стороне Django у меня есть пользователь, который перенаправляется обратно на страницу своего профиля после подключения к Spotify. Это делается путем жесткого кодирования URL-адреса с перенаправлением http-ответа:

 class SpotifyCallbackView(RedirectView):

    def handle_callback(self, request):
        print(self.request.META)
        if request.GET.get("refresh_token", False):
            refresh_token = request.GET["refresh_token"]

        code = request.GET["code"]
        if request.GET.get("refresh_token", False):

            response = requests.post(
                "https://accounts.spotify.com/api/token",
                data={
                    "grant_type": "refresh_token",
                    "refresh_token": refresh_token,

                },
                headers=AUTH_HEADER,
            )
            return response.json()

        else:
            response = requests.post(
                "https://accounts.spotify.com/api/token",
                data={
                    "grant_type": "authorization_code",
                    "code": code,
                    "redirect_uri": request.build_absolute_uri("callback"),

                },
                headers=AUTH_HEADER,
            )
            return response.json()

    def get(self, request, *args, **kwargs):
    
        auth_items = self.handle_callback(request)
        access_token = auth_items["access_token"]
        if "refresh_token" in auth_items.keys():
            refresh_token = auth_items["refresh_token"]
        else:
            refresh_token = ""

        if refresh_token != "":
            return HttpResponseRedirect('http://localhost:3000/users/1/'   access_token   '/'   refresh_token)
        else:
            return HttpResponse(access_token)

  

Очевидно, что идентификатор пользователя не всегда будет «1», поэтому я хочу иметь возможность откуда-то получить этот идентификатор, и после некоторого поиска я увидел, что я могу получить эту информацию из self.request.user , за исключением того, что я не могу. Это анонимно. Почему это так? Я использую Django Knox для аутентификации и, кстати, встроенную в пользовательскую модель Django. Есть ли другой способ получить этот идентификатор?

Комментарии:

1. Что есть SESSION_COOKIE_SAMESITE в ваших настройках? Если вы установите для него значение strict , то файл cookie не будет отправляться при перенаправлении пользователя с Spotify обратно на ваш сайт.

2. У меня это не было установлено, но я все еще получаю анонимность после установки значения «нет» и False