Python 为什么request.user在Django RedirectView中是匿名的?
有很多类似的问题,但没有一个能完全描述我所处的情况。我正在编写Django/React应用程序,并已与Spotify集成。目前,在Django方面,我让用户在连接Spotify后重定向回他们的个人资料页面。这是通过http响应重定向对URL进行硬编码完成的: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)
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后仍将匿名