我有两个域名,例如'example.com'和'website.com'。这些域点击了与单个数据库相关联的same server
和same Rails 4 app
。通过使用路由约束,我已重定向到所需的域URL。这个Rails应用程序通过Apache运行。
如果用户登录example.com,则需要直接与website.com共享登录会话。不仅是身份验证会话,而且,如果我在登录前在“example.com”中设置了任何会话变量,那么该会话也应该与“website.com”共享。 (反之亦然)
示例:
会话类似于example.com中的会话[:example] =“1234”,该会话应与website.com共享
我在Rails中使用'devise'进行灵活的身份验证。
答案 0 :(得分:1)
我相信,没有简单的方法可以做到这一点。 Rails会话基于cookie,并且不能在域之间共享cookie。 (它们只能在子域之间共享,例如api.someapp.com
和someapp.com
)。
对于经过身份验证的用户,您可以使用/构建某种SSO解决方案,该解决方案将会话存储在服务器上,并为每个使用的域发出某种会话ID。
对于未经过身份验证的用户,您可以选择其中一个域作为“主要”域并执行小型jsonp / iframe /对该域的任何请求,这样您就可以在域之间共享数据。
但是使用股票Rails会话所有这些东西要复杂得多。
答案 1 :(得分:0)
Someone share this idea在另一个SO问题上使用iframe。但是哈文没试过。 此外,here is another solution使用看起来更干净的Devise authenticatable功能。