我正在使用反向代理在自定义域上启用ssl。该代理在公共页面上正常工作,但是当用户尝试访问login_required目录时,登录网址会在登录后将它们转移到我的appspot域中。Google App Engine:反向代理+ OpenID,用户在登录后被重定向到appspot域名
有没有办法让用户保留在自定义域中?
这里是我的登陆处理程序:
class OpenIDLoginHandler(webapp.RequestHandler):
def get(self):
domain = self.request.get('domain')
continue_url = self.request.GET.get('continue')
if not continue_url:
continue_url = 'https://my_domain/login_required_directory/'
if domain:
self.redirect(users.create_login_url(dest_url=continue_url,
_auth_domain=None,federated_identity=domain))
else:
login_url = users.create_login_url(dest_url=continue_url,
federated_identity='https://www.google.com/accounts/o8/id')
self.redirect(login_url)
application = webapp.WSGIApplication(
[
('/_ah/login_required', OpenIDLoginHandler)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
我试图覆盖在users.create_login_url呼叫的目的地网址 - 函数仍返回与Appspot上域为“继续”参数LOGIN_URL,像这样的:
“的https:// appspot_domain/_ah/login_redir ClaimID的= HTTPS://www.google.com/accounts/o8/id &继续= https://开头appspot_domain”
我试图简单地重写返回的login_url和re将“continue”参数放置在我的自定义域中,但这会导致404错误。
有什么想法?
提前致谢!
您可以将继续URL设置为appspot域上的页面,该页面发出最终重定向回代理域。不过,您可能会遇到Cookie问题。您的身份验证Cookie始终会在appspot.com上设置;客户端不会将cookie传递回您的代理域。 – 2011-05-01 00:56:36
@Drew,很遗憾,您对auth cookie是正确的。在使用代理域时,用户会话无法识别,因此恐怕登录后的重定向会导致无限重定向循环。似乎我可以通过直接从代理服务器处理登录重定向来解决此问题,但是我找不到有关'/ _ah/login_redir'的任何文档,这些文档可以帮助我复制或完全理解其功能。 – 2011-05-02 18:12:50