【问题标题】:Setting up openId in tornado python在龙卷风 python 中设置 openId
【发布时间】:2011-07-24 01:10:07
【问题描述】:

大家好...我一直在阅读 tornado 文档并遇到了 open id mixin,所以我心想“我身边没有可怕的密码系统”,然后我研究了如何实现它,这是我来的唯一示例对面是这个

class GoogleHandler(tornado.web.RequestHandler, tornado.auth.GoogleMixin):
    @tornado.web.asynchronous
    def get(self):
        if self.get_argument("openid.mode", None):
            self.get_authenticated_user(self.async_callback(self._on_auth))
            return
        self.authenticate_redirect()

    def _on_auth(self, user):
        if not user:
            raise tornado.web.HTTPError(500, "Google auth failed")

不会显示更大的图景,例如路线、应用设置等 # 保存用户,例如 set_secure_cookie()

所以我的问题是。这如何适应龙卷风网站的大局。

【问题讨论】:

    标签: python openid document tornado


    【解决方案1】:

    此处理程序不依赖于应用程序的其他部分,您只需在 url conf 中将其设置为“/login/google”之类的内容,然后在您网站的某处放置指向此 url 的链接。

    用户点击它并被重定向到谷歌身份验证页面(如果它已从谷歌注销)或请求授予访问他/她的基本信息的权限的页面。如果用户接受 - 浏览器将被重定向回此 url 处理程序,并且控制权进入 _on_auth 方法,其中用户对象(如果存在)包含一个包含用户电子邮件、姓名、位置设置和一堆其他内容的字典东西(只需将此变量转储到日志以查看所有内容)。

    此时,您可以对这些数据做任何您想做的事情,但通常看起来像这样:

    1. 检查数据库中是否有使用此电子邮件的用户
    2. 如果您有:您检索它的 id 并将其设置为他的(安全)cookies
    3. 如果它不存在:您使用提供的数据创建它,保存到数据库,可选择使用自动生成的密码发送电子邮件并设置 cookie
    4. 在您的应用程序中重定向到其他位置:到他的个人资料、主页或您需要的任何地方
    5. 现在您的用户在所有其他处理程序中都有可用的 cookie,通常您将在覆盖 RequestHandler.get_current_user 方法时使用它

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多