【发布时间】:2011-07-26 17:35:04
【问题描述】:
使用 django,我通过 Google 对用户进行身份验证。我得到了初始请求令牌并将用户重定向到谷歌进行身份验证。之后,谷歌将用户重定向回我的网站(使用我提供的 redirect_url)。
此时request.user.id 是None 也是request.user.username 为什么会发生这种情况?我需要用户 ID 才能将 access_tokens(谷歌发送给我的)输入数据库。
Django中request.user对象在什么情况下可以为空?
UPDATE1:当我从 Google 重定向回来时,使用 url 模式作为 http://mywebsite.com/lserv?s=goog 控件返回到我的 django 视图功能,但 django 给了我 request.user 对象用户作为匿名用户没有用户名或 ID。为什么?
更新 2:
这一切目前都在python manage.py runserver 上运行...
UPDATE3:有人遇到过类似的情况吗?基本上,request 中的user 无缘无故自动清除,我被分配为Anonymous 用户。所有这些都发生在来自用户(来自浏览器)的 url 请求之间。为什么?
【问题讨论】:
-
有没有通过google认证的app?您需要为此提供更多信息。从您的问题中,我看不出 google 用户帐户与 django 用户有什么关系。您需要将 google 用户存储在本地并 fk 到 django 用户。
-
如果你可以访问一个属性,那么它就不是空的。
-
@ignacio 我可以访问
request.user,但它被分配给匿名用户 -(Pdb) p request.user.__class__() <django.contrib.auth.models.AnonymousUser object at 0x185a3d0> (Pdb) p request.user.id None (Pdb) p request.user.username '' -
当我从
_service 返回时,为什么 django 没有保持相同的用户状态? -
@pyeleven - Google 身份验证只是一个示例,它很可能是其他一些身份验证服务。我的Q更基本。当我使用 url 模式从 Google 重定向回来时,
http://mywebsite.com/lserv?s=goog控件返回到我的 django 视图功能,但用户是Anonymous user,没有用户名 ot id。为什么?
标签: python django django-views django-authentication django-validation