Django request.user是空的

时间:2011-03-31 09:08:51

标签: python django django-views django-authentication django-validation

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

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

在什么条件下,Django中的request.user对象是空的?

UPDATE1:当我使用url模式从Google重定向回来时,http://mywebsite.com/lserv?s=goog控件返回到我的django视图功能,但django为我提供了request.user个对象用户作为没有用户名或ID的匿名用户。为什么呢?

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

UPDATE3:任何人都面临与此类似的事情吗?基本上,user中的request无法自动清除&我被分配为Anonymous用户。所有这些都发生在用户(来自浏览器)的url请求之间。为什么?

2 个答案:

答案 0 :(得分:1)

如果您正在使用谷歌的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.
            # ...

答案 1 :(得分:1)

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

如果你正在使用oauth2(https://github.com/simplegeo/python-oauth2)库,那就是README(https://github.com/simplegeo/python-oauth2/blob/master/README.md )有一个名为“登录Django w / Twitter”的部分可以帮助你。