【问题标题】:Google authentication and iframesGoogle 身份验证和 iframe
【发布时间】:2015-11-05 17:47:13
【问题描述】:

背景

我有一个现有的基于 Python 的 Google AppEngine 应用,其中有几个页面,在 app.yaml 中设置了 login:required。

我希望能够将此应用程序放入 iframe 中。但是,每当用户导航到需要登录的页面并且用户被重定向到 Google 登录页面时,iframe 就会变为空白,因为登录页面设置了 x-frame-options:DENY 标头选项。

问题

有没有办法让 Google 身份验证使用弹出窗口(如 FaceBooks 和 Twitters 身份验证方案那样?)?

或者,是否可以捕获需要登录的事件,并重定向到我提供的另一个页面,该页面会进行一些 iframe 突破,然后重定向到真正的登录页面?

auth_fail_action 不支持自定义重定向 URL,还有其他方法吗?

我能想到的唯一其他解决方案是不使用 login: required,而是在每个视图(或装饰器)中重新实现相同的逻辑。但是,由于这相当笨拙并且需要大量重写,我宁愿不走这条路。

提前致谢, 埃吉尔

【问题讨论】:

    标签: python-2.7 google-app-engine google-app-engine-python


    【解决方案1】:

    很遗憾没有。

    根据您的具体需求,您可以在您的应用上创建一个直通 URL,该 URL 在加载为您的应用设置 iframe 的页面之前处理 login: required 部分。

    类似的东西:

    app.yaml

    handlers:
    - url: /login-check
      script: main.app
      login: required
    

    ma​​in.py

    import webapp2
    
    class LoginCheckHandler(webapp2.RequestHandler):
        def get(self):
            # If they get here, they have been authorized via google's login page
            webapp2.redirect(self.request.get('redirect_url'), abort=True)
    
    app = webapp2.WSGIApplication([
        ('/login-check', LoginCheckHandler),
    ], debug=True)
    

    现在您可以通过$APPENGINE_HOST/login-check?redirect_url=$REAL_PAGE_URL 加载您的主页,这将确保用户首先登录,然后将他们重定向到$REAL_PAGE_URL,这现在可以为您的应用引擎页面添加框架。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2017-10-28
      • 2013-06-12
      • 2014-08-13
      • 2019-05-20
      • 1970-01-01
      • 2018-01-11
      • 2016-09-26
      • 1970-01-01
      相关资源
      最近更新 更多