22

Czy ktoś może wskazać, jakie są nowe opcje konfiguracji sesji Rails 3.x?Szyny 3 dodatkowe opcje konfiguracji sesji (klucz, expires_after, secure)

Próbuję skopiować tę samą konfigurację, którą mam w mojej aplikacji Rails 2.3.x.

Jest to konfiguracja, że ​​użyłem w aplikacji:

#environment.rb 
config.action_controller.session_store = :active_record_store 

config.action_controller.session = { 
    :key   => '_something', #non-secure for development 
    :secret  => 'really long random string' 
    } 


# production.rb - override environment.rb for production 
config.action_controller.session = { 
    :key   => '_something_secure', 
    :secret   => 'really long random string', 
    :expire_after => 60*60,#time in seconds 
    :secure   => true #The session will now not be sent or received on HTTP requests. 
} 

Jednak w Rails 3.x, mogę tylko znaleźć wzmianki o następujące elementy:

AppName::Application.config.session_store :active_record_store 

AppName::Application.config.secret_token = 'really long random string' 

AppName::Application.config.cookie_secret = 'another really long random string' 

Czy istnieją inne config ustawienia kontrolujące klucz, expire_after time i secure option?

Jeśli chodzi o te drugie, jeśli w pliku production.rb ustawiono "config.force_ssl = true", zakładam, że opcja bezpieczna nie jest już wymagana?

Dziękuję bardzo!

+2

ważności: http://stackoverflow.com/questions/5860950/setting-session-timeout-in-rails-3 –

+2

Bezpieczne: http://stackoverflow.com/ pytania/72242/how-do-i-set-the-httponly-flag-on-cookie-in-rails –

Odpowiedz

39

Skonfiguruj magazyn sesji oparty na plikach cookie za pomocą inicjatora, prawdopodobnie w wersji config/initializers/session_store.rb. W Rails 3 sklep sesja jest kawałek oprogramowania pośredniczącego, a opcje konfiguracyjne są przekazywane w jednym z wezwaniem do config.session_store:

Your::Application.config.session_store :cookie_store, :key => '_session' 

można umieszczać żadnych dodatkowych opcji, które mają w hash z :key, np

Your::Application.config.session_store :cookie_store, { 
    :key =>   '_session_id', 
    :path =>   '/', 
    :domain =>  nil, 
    :expire_after => nil, 
    :secure =>  false, 
    :httponly =>  true, 
    :cookie_only => true 
} 

(To tylko standardowe ustawienia domyślne)

Jeśli zmusić SSL produkcji następnie ustawienie bezpieczny na cookie naprawdę nie powinno mieć znaczenie w praktyce, ale możesz ustawić go tak, aby być po bezpiecznej stronie ...

Your::Application.config.session_store :cookie_store, { 
    :key =>   '_session_id', 
    :secure =>  Rails.env.production? 
} 
+0

Wygląda na to to! Dzięki za to! – shedd

+2

Ponadto, aby wyjaśnić, wygląda na to, że te opcje działają również w magazynie sesji active_record. Zauważyłem, że próbki kodu w powyższym kodzie są zakodowane dla magazynu plików cookie, ale próbowałem ich z magazynem active_record (o to pytano), a opcje wydają się działać. – shedd

+0

Debugowanie starego projektu, dzięki za oszczędność czasu. –