2011-07-01 98 views
0

我最近升級到Rails 3.0.7(來自Rails 2),我突然發現我的cookies不再有效。在我能夠設定到期日之前,一切都很順利。我知道新的cookies。做事的永久方式,但這似乎也沒有效果(我的理解是舊的方式應該無論如何)。Rails 3 cookies不會永久保存

這裏是我的代碼,這是非常簡單的:

cookies[:remember_me_id] = { :value => user.id.to_s, :expires => 365.days.from_now } 
cookies[:remember_me_code] = { :value => Digest::SHA256.hexdigest(user.cookie_code), :expires => 365.days.from_now } 

只是要100%的清楚,我已經試過這還有:

cookies.permanent[:remember_me_id] = user.id.to_s 
cookies.permanent[:remember_me_code] = Digest:SHA256.hexdigest(user.cookie_code) 

的cookie被創建,但問題是它們將在瀏覽器關閉時設置爲過期。我已經在Firefox和IE中檢查過了。在Firefox中,當我查看cookie時,它說到期時間是瀏覽器關閉的時間。這不是我想要的。

有什麼簡單的我在這裏失蹤?必須使用一些新的Rails 3設置來保存Cookie?

回答

1

我一直在遇到同樣的問題,但只有在MS Windows環境下使用WEBrick進行開發時:Rails 3.0.5,ruby 1.8.7(2011-02-18 patchlevel 334)[i386-mingw32]。

我發現cookie expiry在我平時的linux環境下運行WEBrick上執行相同的代碼時能夠按預期工作:Rails 3.0.5,ruby 1.8.7(2010-08-16 patchlevel 302)[x86_64-linux]) 。上面列出的兩種方法(設置:明確過期或使用「永久」訪問器)似乎可以在我的Linux機器上運行。

因爲問題似乎與Windows環境隔離,所以我沒有詳盡地搜索解決方案......但粗略搜索沒有發現答案。這個問題你有沒有進一步的運氣?

您是在Windows上開發並正在爲開發環境切換一個選項嗎? (顯然不是理想的)

+0

我仍然有這個問題,但是,是的,我在Windows上開發和使用WEBrick。我還沒有機會看到服務器上的生產模式是如何工作的,因爲我的應用程序沒有接近完成。我在這裏發現了另一個問題(沒有出現在搜索中),解決了同樣的問題,但沒有真正的答案。顯然這是一個WEBrick的事情。只要它隻影響我的開發和測試,我不會太在意。不過,這有點煩人。 – seaneshbaugh