2015-11-02 85 views
0

用戶登錄通過OAuth的通過URL重定向到我的網站龍捲風與參數

http://provemath.org/index?method=google&state=KasQzeMyWQj3YTvF4aZGi9smLUMwXa&code=4/OAeBwzZLSqoHtwBgEHojEQ1_FFO7TK03j5UUyF2Bdng# 

我真的不喜歡在URL參數的混亂,目前它會導致一個問題,當他們重新加載。所以我想要做的是將它們重定向到provemath.org,以便從URL中獲取這些參數,但是沿着某些其他方式傳遞這些相同的變量。

是否有可能做一個重定向(類似self.redirect('http://provemath.org', self.request.uri)),並通過URL傳遞一些變量而不是

它看起來並不像可能是內置的:

http://www.tornadoweb.org/en/stable/_modules/tornado/web.html#RequestHandler.redirect

+1

它是通過他們在HTTP標頭中的選項?如果是這樣,只需在重定向之前使用'self.set_header(「prev-querystring」,querystring)''。另一個選項可能只是記錄它們。另外請注意,您可以在代理級別執行此操作(nginx等)。 – matagus

回答

1

這不是重定向本身的一部分,但是你可以用餅乾來回傳遞這樣的信息(這是處理oauth重定向的通常方式)。通常使用oauth,您可以將oauth回調URL配置爲provemath.org/oauth(而不是provemath.org/index),然後在您的/oauth處理程序中處理參數並設置cookie。如果您在使用本tornado.auth.GoogleOAuth2Mixin會是什麼樣

 user = yield self.get_authenticated_user(
      redirect_uri='http://provemath.org/oauth', 
      code=self.get_argument('code')) 
     self.set_secure_cookie("user", json.dumps(user)) 
     self.redirect("/") 

(或保存user到數據庫,只是把用戶ID在Cookie)

+0

所以基本上只要cookie在那裏,他們就'登錄'了。即使他們註銷了Facebook,他們仍然會在我的網站上登錄。它是否正確? – mareoraft

+1

是的。使用基於oauth的登錄方案註銷總是一個棘手的問題;我認爲在大多數情況下,您必須從每個使用基於Facebook的身份驗證的站點註銷(或等待Cookie過期) –