我有一个基于Python的Google AppEngine应用程序,其中包含几个页面,其中login:required在app.yaml中设置。
我希望能够将此应用置于iframe中。但是,每当用户导航到需要登录的页面并且用户被重定向到Google登录页面时,iframe将变为空白,因为登录页面设置了x-frame-options:DENY标题选项。
有没有办法让Google身份验证使用弹出窗口(比如FaceBooks和Twitters身份验证方案呢?)?
或者,是否可以捕获登录所需的事件,并重定向到我提供的另一个页面,执行一些iframe突破,然后重定向到真正的登录页面?
auth_fail_action不支持自定义重定向网址,还有其他方法吗?
我能想到的唯一其他解决方案是不使用login:required,而是在每个视图(或装饰器)中重新实现相同的逻辑。然而,由于这是相当笨拙并需要大量重写,我宁愿不去这条路。
提前致谢, 埃吉尔
答案 0 :(得分:0)
不幸的是没有。
根据您的具体需求,您可以在应用中创建一个处理login: required
部分的直通网址,然后再加载iframe应用的网页。
类似于此的东西:
<强>的app.yaml 强>
handlers:
- url: /login-check
script: main.app
login: required
<强> main.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
,现在可以将您的应用引擎页面设为iframe。