Rails 2.3.14为会话设置expire_after将被忽略

时间:2012-05-31 16:04:29

标签: ruby-on-rails session cookies nginx passenger

我的环境中有下一个配置.rb:

config.action_controller.session_store = :cookie_store
config.action_controller.session = {
:expire_after   => 14.days,
:domain         => DOMAIN,
:session_key    => '_session',
:secret         => 'some_string'
}

将session_store设置为 active_record_store mem_cache_store 没有帮助。 此外,我试过从控制器设置cookie(所有已建立的选项到期):

cookies[:test] = { :value => 'test' , :expires => 3600.to_i.from_now.utc }

在关闭浏览器窗口后,两种方式都会删除所有会话和cookie - 它们仅用于浏览器会话。 我已经尝试了几乎所有在互联网上建立的变种 - 没有运气(

我的配置是:Ubuntu 10.04 LTS,rails 2.3.14,ruby Enterprise Edition 1.8.7,Phusion Passenger版本3.0.11和由Phusion Passenger编译的Nginx。

我有一个选项,它是Nginx不允许设置一些标题,但也没有找到任何解决方案。

任何帮助表示赞赏!感谢

UPD。 我试图将会话的所有配置放到config / initializers / session_store.rb - 没有任何改变。 我觉得这不是铁轨问题。可能是phusion + nginx错误? 我甚至不知道如何检查问题所在。

2 个答案:

答案 0 :(得分:1)

将它放在config / initializers / session_store.rb

ActionController::Base.session = {
  :expire_after   => 14.days,
  :domain         => DOMAIN,
  :session_key    => '_session',
  :secret         => 'some_string'
}

答案 1 :(得分:0)

试试这个:

config.action_controller.session_store = :cookie_store
ActionController::Base.session_options[:expire_after] = 14.days

对于Rails 3

Rails.application.config.session_store :cookie_store, :key => "whatever", :expire_after => 14.days