2013-05-13 50 views
4

Rails 4將包含基於加密cookie的會話。我們希望從活動記錄Cookie存儲中更改。有沒有辦法做到這一點,而不會中斷我的應用程序的客戶?我不想刪除所有當前會話。將活動記錄存儲區中的會話遷移到Cookie存儲區

+2

請問爲什麼要這樣做?從rails安全指南http://guides.rubyonrails.org/security.html中,您應該避免將大對象存儲在cookie中。 =>確定,現在安全,但您應該避免製作大型Cookie。所以,對我來說,即使使用加密的cookies,也要繼續使用活動記錄會話。 – joel1di1 2013-09-24 08:28:37

回答

2

同意Nathan不要倒退,除非您因爲會話存儲而擔心DB性能。在這種情況下,我建議您的會話使用Redis或Memcached存儲,而不是基於cookie。

0

還有一個問題。我試圖從活動記錄遷移到cookie存儲,現在每個用戶都會收到「我們很抱歉,但出錯了」錯誤。解決辦法是清除cookie,但我必須告訴每個用戶。他們中的許多人會認爲該網站已經壞了。所以這是不好的。如果你不能聯繫每個用戶,這是非常糟糕的。

0

這是可行的,我只是做了另一種方式(由於我不會進入的原因,我們需要讓他們在數據庫中)。在應用控制器,把之前過濾這樣的:

prepend_before_filter :migrate_session 

def migrate_session 
    # migrating over old sessions 
    session_model = YourSessionModel.find_by_session_id(session.id) 
    if session_model 
    data = session_model.data 
    data.each do |key,value| 
     session[key] = value 
    end 
    session_model.destroy 
    end 
end 

一切,進入會議散列將在瀏覽器來保留。在您不再有任何活動記錄會話後,您可以擺脫此代碼。