2015-11-02 95 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过期) –