Django 的 request.user 为空
我在用Django做用户认证,用户是通过谷歌来登录的。首先,我获取初始的请求令牌,然后把用户重定向到谷歌进行认证。认证完成后,谷歌会把用户重定向回我的网站(使用我提供的重定向网址)。
在这个时候,request.user.id
是 None
,request.user.username
也是 None
,这是为什么呢?我需要用户的ID来把谷歌发给我的访问令牌存入数据库。
在什么情况下,Django中的 request.user
对象会是空的呢?
更新1: 当我从谷歌重定向回来,网址是 http://mywebsite.com/lserv?s=goog
时,控制权回到了我的Django视图函数,但Django给我的 request.user
对象是匿名用户,没有用户名和ID。这是为什么呢?
更新2: 目前所有这些都在 python manage.py runserver
上运行...
更新3: 有没有人遇到过类似的情况?基本上,出于某种原因,request
中的 user
自动清空了,我被分配为 Anonymous
用户。所有这些都是在用户(从浏览器)发起的URL请求之间发生的。为什么会这样呢?
2 个回答
1
如果你在使用谷歌的oauth接口,要获取用户信息,你需要这样做:
from google.appengine.api import oauth
# ...
try:
# Get the db.User that represents the user on whose behalf the
# consumer is making this request.
user = oauth.get_current_user()
except oauth.OAuthRequestError, e:
# The request was not a valid OAuth request.
# ...