在应用程序间共享rails会话

时间:2009-06-02 21:09:53

标签: ruby-on-rails cookies

我有两个应用程序,希望他们分享他们的会话。这是微不足道的,至少到目前为止。现在我正处于一些困境中。

我在environment.rb中设置了相同的session_key和secret,并且两个应用程序没有共享同一个会话。

验证了development.rb是否有什么......没有。

尝试清理cookies等,没有。

然后我试图改变这个秘密,幸运的是我试图改变简短(mysecret)的东西然后出现了一些尴尬的东西。运行应用程序1还可以,但运行应用程序2:

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:188:in `ensure_secret_secure': Secret should be something secure, like "f1e78444a4c3402165606a8314d29704".  The value you provided, "myownsecret", is shorter than the minimum length of 30 characters (ArgumentError)
    from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_c

但两个应用程序都在2.3.2中运行。

然后我尝试了两个应用程序的控制台,并验证了秘密是非常相同的。

那么,有什么可能影响到这里?

1 个答案:

答案 0 :(得分:1)

可能与域名有关吗?我很确定会话cookie是由域存储的。您可以尝试使用下面的代码覆盖它 - 只要您为每个应用程序使用相同的域和不同的子域(将它放在config / environments / production.rb中 - 或者如果需要它可以在development.rb中工作)开发模式):

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain] =  '.yourdomain.com'
Rails 2.3中的

编辑语法为:

config.action_controller.session = { 
  :domain => ".yourdomain.com" 
}