我正在將Rails 2中的Rails應用程序直接升級到Rails 4.我正在使用新的/config/initializers/session_store.rb
文件和CookieStore,但由於某些原因,我的會話未保存。Rails會話不保存
當試圖沿着 render :text => "#{request.session_options[:id]}"
線做一些事情,我得到一個新的會話ID每次刷新。
我試過不同的瀏覽器,並且都應該接受cookie。
我不知道發生了什麼事情。爲什麼這些會議不會持續?!
編輯:謝謝大家的建議。下面是多一點信息,以及幾件事情我已經注意到:
- 首先,我的設置 - 我通過RVM的Ubuntu VM在我的Windows上運行使用Rails 4 /紅寶石2服務器7機器。
- 儘管我是從Rails 2進行升級,只是真的適用於模型/控制器/視圖/等 - 我爲所有支持基礎架構生成了新的Rails 4應用程序。
- 我在同一個虛擬機上創建了另一個應用程序,只需設置一個會話然後顯示,並且工作正常。
- 會話存儲的內容根據用戶在做什麼而有所不同,但通常它只包含一個用戶標識(只是一個整數),偶爾還會多一點 - (我首先注意到這一點在嘗試通過時表現出來來自OAuth寶石的OAuth令牌)
- 我注意到,如果虛擬機的系統時鐘落後於Windows 7主機時鐘,用戶ID會話將會保留。這會導致其他問題,尤其是OAuth,但似乎只是時間問題。我嘗試過從我的environments/development.rb中刪除時區,但這沒有幫助。
你可以發佈文件的內容。你有沒有定義secret_token? rails日誌內的任何警告? – jurglic
Sure @jurglic - session_store.rb文件是'Uplinkr4 :: Application.config.session_store:cookie_store,key:'_uplinkr4_session'',祕密標記在secret_token.rb中定義。我在日誌中看到絕對沒有警告(與此有關)。 – Jared
看起來不錯。您在更改這些文件後是否重新啓動了服務器?你沒有任何機會在瀏覽器中禁用cookies? – jurglic