我的Rails应用目前可在example.org上使用,但我想切换到example.com
进行通配符301重定向routes.rb
不是问题,但是我也想保留用户会话。由于新域将无法访问旧域的cookie,因此将用户重定向到新域并仍然登录的最佳方式(安全且尽可能简单)是什么?
我发现许多线程都在谈论使用复杂的身份验证令牌方法设置跨域Web应用程序,但是我正在寻找一次性的单向迁移,因此我希望解决方案会更简单。
有什么建议么?
我正在使用Ruby on Rails 3,OmniAuth,并使用默认的“ cookie_store”作为会话存储。
您可以执行与发送带有身份验证令牌的电子邮件链接相同的方法。检查并确认Cookie正确无误example.org
,如果正确,则将其重定向至:
http://example.com?token=<their token>
然后检查以确保令牌与令牌中的令牌匹配。如果令牌确实匹配,请为example.com
域创建会话cookie ,然后在数据库中更改令牌。
这将成功地从一个域转移到另一个域,同时提供对新域的持久登录(通过cookie),并通过更改数据库中的身份验证令牌来关闭它们后面的门。
编辑
要在下面回答您的问题,我认为您不需要中间件或其他任何花哨的东西。您可以在example.org的应用程序控制器中执行简单的before过滤器,例如:
before_filter :redirect_to_dot_com
...
def redirect_to_dot_com
url = "http://example.com" + request.fullpath
url= destination + (url.include?('?') ? '&' : '?') + "token=#{current_user.token}" if signed_in?
redirect_to url, status: 301
end
这将以两种方式重定向用户,如果用户在.org站点上登录,则将令牌附加到查询中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句