繁体   English   中英

Django request.user是空的

[英]Django request.user is empty

使用django,我通过Google验证用户身份。 我收到了初始请求令牌并将用户重定向到谷歌进行身份验证。 之后谷歌将用户重定向回我的网站(使用我提供的redirect_url)。

此时request.user.idNone所以request.user.username为什么会发生这种情况? 我需要用户ID才能输入access_tokens(谷歌发送给我)到数据库中。

在什么条件下可以request.user Django中的用户对象为空?

更新1:当我通过网址模式从Google重定向回来时http://mywebsite.com/lserv?s=goog控件返回到我的django视图功能,但是django给了我request.user对象用户作为匿名用户没有用户名或ID。 为什么?

UPDATE2:所有这一切都在python manage.py runserver上运行,现在......

更新3:任何人都面临类似的事情? 基本上,没有理由requestuser自动清除并且我被指定为Anonymous用户。 所有这些都发生在用户(来自浏览器)的url请求之间。 为什么?

如果你使用谷歌的oauth api。 要获得用户,您必须执行此类操作

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.
            # ...

Django的身份验证机制与谷歌或任何其他身份验证服务无关。 如果您想将第三方授权服务与您的Django站点集成,您应该自己动手。

如果你正在使用oauth2(https://github.com/simplegeo/python-oauth2)库,它的README(https://github.com/simplegeo/python-oauth2/blob/master/README.md)有一个名为“使用Twitter登录Django”的部分可能会对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM