Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在同一rails应用程序和同一服务器中的不同域名之间共享会话?_Ruby On Rails_Apache_Session_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何在同一rails应用程序和同一服务器中的不同域名之间共享会话?

Ruby on rails 如何在同一rails应用程序和同一服务器中的不同域名之间共享会话?,ruby-on-rails,apache,session,ruby-on-rails-4,Ruby On Rails,Apache,Session,Ruby On Rails 4,我有两个域名,比如“example.com”和“website.com”。这些域访问与单个db连接的同一服务器和同一Rails 4应用程序。通过使用路由约束,我已重定向到所需的域url。这个Rails应用程序是通过Apache运行的 如果用户登录到example.com,则需要直接与website.com共享登录会话。不仅是身份验证会话,而且,如果我在登录前在“example.com”中设置了任何会话变量,那么该会话也应该与“website.com”共享。(反之亦然) 例如: 会话类会话[:ex

我有两个域名,比如“example.com”和“website.com”。这些域访问与单个db连接的
同一服务器
同一Rails 4应用程序
。通过使用路由约束,我已重定向到所需的域url。这个Rails应用程序是通过Apache运行的

如果用户登录到example.com,则需要直接与website.com共享登录会话。不仅是身份验证会话,而且,如果我在登录前在“example.com”中设置了任何会话变量,那么该会话也应该与“website.com”共享。(反之亦然)

例如:

会话类会话[:example]=“1234”在example.com中,该会话应与website.com共享


我正在Rails中使用“Desive”进行灵活的身份验证。

我相信,没有简单的方法可以做到这一点。Rails会话基于Cookie,不能在域之间共享Cookie。(它们只能在子域之间共享,例如
api.someapp.com
someapp.com

对于经过身份验证的用户,您可以使用/构建某种SSO解决方案,将会话存储在服务器上,并为使用的每个域颁发某种会话ID

对于未经身份验证的用户,您可以选择一个域作为“主”域,并对该域执行一个小的jsonp/iframe/任何请求,这样您就能够在域之间共享数据

但所有这些都比使用stock Rails会话复杂得多。

在另一个SO问题上使用iframe。但我还没试过。 此外,使用外观更干净的Desive authenticatable功能