2012-07-23 43 views
2

在我們的生產站點上,我們使用rails 3.2.3和authlogic 3.1.0。我可以使用任何瀏覽器登錄到我們的Rails應用程序。我們目前正在使用rails 3.2.6以及升級到使用資產管道,因此我們也將authlogic升級到3.1.3。Session Rails 3.2.6和authlogic 3.1.3

問題是,我能夠登錄到運行rails 3.2.3和authlogic 3.1.0的生產環境中,但在功能分支上本地升級到rails 3.2.6和authlogic 3.1.3時,兩者都需要登錄谷歌鉻和移動Safari瀏覽器無法正常工作,並且由於無會話而重定向,而本地登錄在safari和firefox中工作。我已經檢查過並且所有測試設備上都接受了Cookie。唯一的問題似乎在rails 3.2.3/authlogic 3.1.0和rails 3.2.6/authlogic 3.1.3之間,因爲沒有任何代碼庫已經改變,而不是gem版本。

更新:在本地服務器日誌中,在谷歌瀏覽器和移動Safari瀏覽器中,我得到:警告:無法驗證CSRF令牌的真實性,但在safari上我不是。 = csrf_meta_tag是在application.haml

回答

4

回到代碼提交後,錯誤源於session_store.rb初始化程序中的更改。 Cookie域未正確設置,因此導致會話被瀏覽器而不是應用程序本身重置爲零。更改以下行中配置/初始化/ session_store.rb後:

Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => '*domain.tld*'

Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => :all

的Cookie也不會被丟棄,我能夠登錄。

0

沒有深入這個太過分了,你是否嘗試禁用CSRF令牌驗證功能。

隨着您的更新,您提到了有關CSRF警告的日誌,這會讓我相信authlogic的rails會將請求標記爲僞造。

+0

我在application_controller.rb內註釋掉了protect_from_forgery,並且如預期的那樣錯誤不再存在於日誌文件中,但它似乎仍將會話重置爲零並重定向回登錄頁面 – 2012-07-24 17:20:21

+0

沒有任何其他代碼示例我無法提供任何額外的支持或建議。我可能會嘗試追蹤代碼更改(從簡單開始),因爲工作或下降版本的authlogic或確保從authlogics運行最新的ode基地Github回購 – davidcollom 2012-07-24 21:19:18