使用GAE用户服务无法获得“以不同用户身份登录”

2024-05-12 19:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用GAE用户服务来实现登录/注销机制,以及create_login_url等,一切都很好。顺便说一句,我使用联邦OpenID选项。在

但我有一个问题-因为用户服务与用户进行检查=users.get_当前用户()然后,如果用户登录到他的gmail,它会自动将他登录到我的服务中。这是可以的,但是如果另一个用户想要登录呢? 如何将用户重定向到“以不同用户身份登录”之类的页面?在

我试图删除我正在创建的cookie,但它被删除了:

  if not (self.request.cookies.has_key('ACSID')):
        logging.debug('no cookies')
        self.redirect(users.create_login_url(self.request.uri))
        return

然后我看到了“没有cookies”的日志,但是接下来发生的事情是,它让用户登录,而没有把他放在“google帐户”登录页面上。。。所以用户永远没有机会以不同的用户身份登录。在

有什么想法吗?在


Tags: 用户selfurlrequestcreatelogin身份页面
1条回答
网友
1楼 · 发布于 2024-05-12 19:17:59

我能想到的最好的方法是:您可以尝试显示一个指向/_ah/login_required的链接,它将触发OpenID登录页面,并且(希望)还包含一个“以其他人身份登录”按钮。在

这并不能完全解决问题,因为多个openid提供者会使问题变得复杂。在

不可能强迫某人从提供商的站点AFAIK注销。在

创建登录/这不是我页面的完整示例:

将登录路径添加到您的app.yaml

- url: /_ah/login_required
  script: app.py

创建一个OpenID登录处理程序来创建一个相关的登录url

^{pr2}$

向wgsi应用程序添加OpenID处理程序(可能是main.py):

def main():
    ROUTES = [
        ('/_ah/login_required',      handlers.OpenIDHandler),
    ]
    application = webapp.WSGIApplication(ROUTES, debug=True)
    util.run_wsgi_app(application)
if __name__ == '__main__':
  main()

现在,您可以访问/_ah/login_required,只要您希望有人提示您登录(或“这不是我”页面)

相关问题 更多 >