我有两个应用程序,希望他们分享他们的会话。这是微不足道的,至少到目前为止。现在我正处于一些困境中。
我在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中运行。
然后我尝试了两个应用程序的控制台,并验证了秘密是非常相同的。
那么,有什么可能影响到这里?
答案 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"
}