2012-05-31 42 views
2

我有我的environment.rb未來配置:的Rails 2.3.14爲會話設置expire_after被忽略

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_storemem_cache_store沒有幫助。 此外,我已經試過只設置從控制器的cookie(與過期的所有選項創辦):

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

在這兩個方面的所有會話和餅乾關閉瀏覽器窗口後刪除 - 他們只對瀏覽器會話。 我已經試過幾乎所有變體成立於互聯網 - 沒有運氣(

我的配置是:Ubuntu的10.04 LTS,軌道2.3.14,Ruby企業版1.8.7,乘客的Phusion版本3.0.11和Nginx是由編譯客運的Phusion。

我一直認爲它是Nginx的不允許設置一些信息,但是還沒有找到任何解決方案的選項。

任何幫助表示讚賞!謝謝

UPD。 我試着把會話的所有配置設置爲config/initializers/session_store.rb - 沒有cha nged。 我有一種感覺,這不是軌道的問題。可能是phusion + nginx錯誤? 我甚至不知道如何檢查哪裏出了問題。

回答

1

在配置/初始化/ session_store.rb

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

我已經嘗試過這種變體還。沒有運氣 - 關閉瀏覽器窗口 –

+0

HI @sailor我用這個在我的Rails3中的代碼,但會議結束後到期它將給出零誤差USER_ID到期後,是他們的任何方式來重定向用戶登錄上刷新頁面 – Ravindra

+0

對我來說,這部作品在軌2.3.18。這可能很明顯,但您必須在初始化程序中更改某些內容後重新啓動服務器。此外,在鍍鉻您可以輕鬆地檢查一個cookie的'到期/ MAX-age'(在資源選項卡)。 – nathanvda

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 
+0

沒有任何變化.. expire_after被忽略。 –

+0

你能告訴我們你如何測試,它被忽略? –

+0

我檢查我的瀏覽器的cookie部分,當我的Cookie點擊「_session」它表明,它將瀏覽器會話結束後到期。這是真的 - 我關閉瀏覽器並再次打開,沒有cookie) –