Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么request.user在Django RedirectView中是匿名的?_Python_Reactjs_Django_Redirect_Django Rest Framework - Fatal编程技术网

Python 为什么request.user在Django RedirectView中是匿名的?

Python 为什么request.user在Django RedirectView中是匿名的?,python,reactjs,django,redirect,django-rest-framework,Python,Reactjs,Django,Redirect,Django Rest Framework,有很多类似的问题,但没有一个能完全描述我所处的情况。我正在编写Django/React应用程序,并已与Spotify集成。目前,在Django方面,我让用户在连接Spotify后重定向回他们的个人资料页面。这是通过http响应重定向对URL进行硬编码完成的: class SpotifyCallbackView(RedirectView): def handle_callback(self, request): print(self.request.META)

有很多类似的问题,但没有一个能完全描述我所处的情况。我正在编写Django/React应用程序,并已与Spotify集成。目前,在Django方面,我让用户在连接Spotify后重定向回他们的个人资料页面。这是通过http响应重定向对URL进行硬编码完成的:

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)


显然,用户的ID并不总是“1”,所以我希望能够从某处获取该ID,经过一些搜索后,我发现我可以从
self.request.user
中获取该信息,但我不能。这是匿名的。为什么会这样?我正在使用Django Knox进行身份验证,顺便说一句,Django的内置用户模型。是否有其他方法获取此ID?

您的设置中有什么?如果将其设置为
strict
,则当用户从Spotify重定向回您的站点时,将不会发送cookie。未设置cookie,但在将其设置为“无”和False后仍将匿名