【问题标题】:Django request.user is emptyDjango request.user 为空
【发布时间】:2011-07-26 17:35:04
【问题描述】:

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

此时request.user.idNone 也是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


【解决方案1】:

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

如果你使用oauth2 库,README 有一个名为“使用 Twitter 登录 Django”的部分可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    如果您使用的是 google 的 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.
                # ...
    

    【讨论】:

    • 嘿 abdul,我没有使用来自谷歌的任何应用程序或 oauth api。我正在使用oauth2 lib 并在此基础上编写了我的函数...我实际上对获取 Django 分配给该用户的用户 ID 更感兴趣...
    猜你喜欢
    • 2019-03-29
    • 2015-10-24
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2017-01-02
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多