Rails服务器上的会话

时间:2008-09-19 19:32:52

标签: ruby-on-rails session cross-server

我希望在不同服务器上拥有一些共享相同会话的rails应用程序。我可以在同一台服务器上完成,但不知道是否可以通过不同的服务器共享。任何人已经或知道该怎么做?

由于

4 个答案:

答案 0 :(得分:6)

使用Database Session store。缺点是:

  

要生成表格,请在控制台上运行

rake db:sessions:create
     在您的environment.rb中

,请包含此行

config.action_controller.session_store = :active_record_store

答案 1 :(得分:3)

根据您的应用的设置方式,您可以通过将应用设置为使用相同的域来轻松共享来自同一域(foo.domain,bar.domain,域)中的网站的Cookie秘密: http://www.russellquinn.com/2008/01/30/multiple-rails-applications/

现在,如果您有不同的网站,例如sdfsf.com,dsfsadfsdafdsaf.com等,您将不得不做更多的技巧,因为Cookie的本质限制了它们到特定的域。基本上你要做的就是使用跨站点脚本来代替劫持你的会话,从其他会话中读取它。

在这种情况下,使用相同的cookie秘密等的组合然后一些跨站点脚本您可以手动提取会话信息并在每个站点上重新创建它(或者如果您使用ActiveRecord会话{或NFS会话目录},链接现有的)。这不容易,但可以做到。

或者,低技术方式(我以前做过的)只是让登录页面访问每个站点上的特制登录页面,在其上设置应用程序cookie并将您弹回到下一个。它不漂亮。

答案 2 :(得分:0)

尝试使用数据库支持的会话。

答案 3 :(得分:0)

在Rails 2.0中,现在有一个CookieStore,它将所有会话数据存储在客户机器上的加密cookie中。

http://izumi.plan99.net/blog/index.php/2007/11/25/rails-20-cookie-session-store-and-security/