22

¿Puede alguien indicar cuáles son las nuevas opciones de configuración de sesión de Rails 3.x?Rails 3 opciones de configuración de sesión adicionales (clave, expires_after, secure)

Estoy tratando de duplicar la misma configuración que tengo en mi aplicación Rails 2.3.x.

Esta es la configuración que utilicé en la aplicación:

#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. 
} 

Sin embargo, en los carriles 3.x, sólo puedo encontrar mención de los siguientes:

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' 

¿Hay otra config configuraciones para controlar la clave, expirar_después del tiempo, y la opción segura?

Respecto a esto último, si "config.force_ssl = true" está establecido en production.rb, ¿asumo que la opción segura ya no es necesaria?

Muchas gracias!

+2

de caducidad: http://stackoverflow.com/questions/5860950/setting-session-timeout-in-rails-3 –

+2

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

Respuesta

39

Ahora configura el almacén de sesiones basado en cookies a través de un inicializador, probablemente en config/initializers/session_store.rb. En Rails 3, el almacenamiento de sesión es una pieza de middleware, y se pasan las opciones de configuración con una sola llamada a config.session_store:

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

Usted puede poner todas las opciones adicionales que desee en el hash con :key, por ejemplo,

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

(Esos son sólo los valores predeterminados estándar)

Si fuerza SSL en la producción luego poner seguro en la cookie en realidad no debería hacer una diferencia en la práctica, pero es posible que desee configurarlo sólo para estar en el lado seguro ...

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

Parece que sí ¡eso! ¡Gracias por esto! – shedd

+2

Y también, solo para aclarar, parece que estas opciones también funcionan en el almacén de sesión active_record. Observé que los ejemplos del código de arriba están codificados para el almacén de cookies, pero probé estos con active_record store (que fue sobre lo que se preguntó la pregunta) y las opciones parecen tener efecto. – shedd

+0

Depuración de un proyecto anterior, gracias por ahorrar mi tiempo. –

Cuestiones relacionadas