我正在使用反向代理在自定義域上啓用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