切换到新域名时保持用户会话(Ruby on Rails)

我的Rails应用程序目前在example.org上可用,但我想切换到example.com

routes.rb执行通配符301重定向不是问题,但我也想保留用户会话 。 由于新域名无法访问旧域名的cookie,因此将用户重定向到新域名仍然有他/她登录的最佳(安全且尽可能简单)方法是什么?

我发现很multithreading都在谈论使用复杂的身份validation令牌方法设置跨域Web应用程序,但我正在寻找一次性单向迁移,所以我希望解决方案对此更简单。

有什么建议?

我正在使用Ruby on Rails 3,OmniAuth,并使用默认的’cookie_store’作为我的会话存储。

您可以像发送带有身份validation令牌的电子邮件链接一样执行此操作。 检查以validationexample.org上的cookie是否正确,如果是,则将它们重定向到:

 http://example.com?token= 

然后检查以确保令牌在到达时与数据库中的令牌匹配。 如果令牌匹配,则为example.com域创建会话cookie,然后更改数据库中的令牌。

这将成功地从一个域转移到另一个域,同时在新域上提供持久登录(通过cookie)并通过更改DB中的身份validation令牌来关闭它们后面的门。

编辑

要回答下面的问题,我认为您不需要中间件或任何花哨的东西。 你可以在example.org的应用程序控制器中做一个简单的filter,例如:

 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站点上登录,则将令牌附加到查询。