Establecer fecha de inicio y fecha de vencimiento para las cookies de Rails


Respuestas:


200

Extractos de la documentación de Rails 5 :

Las cookies se leen y escriben a través de las cookies ActionController #.

Las cookies que se leen son las que se reciben junto con la solicitud, las cookies que se escriben se enviarán con la respuesta. Leer una cookie no recupera el objeto de la cookie en sí, solo el valor que tiene.

Ejemplos de escritura:

# Sets a simple session cookie.
# This cookie will be deleted when the user's browser is closed.
cookies[:user_name] = "david"

# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }

# Sets a cookie that expires at a specific time.
cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 5) }

# Sets a "permanent" cookie (which expires in 20 years from now).
cookies.permanent[:login] = "XJ-122"

[...]

Los símbolos de opción para configurar cookies son:

  • :expires - La hora a la que caduca esta cookie, como objeto Time o ActiveSupport :: Duration.

[...]



8
@Senthil, si obtiene algo de otro artículo (en este caso, 'tal cual' de los documentos de rails), por favor, dé una referencia al origen.
sameera207

1
también: la opción expires debe ser una instancia de Time. cookies[:login] = { value: "JX-122", expires: 3.months }generaría error. pero esto no lo hará. cookies[:login] = { value: "JX-122", expires: 3.months.from_now } ver más detalles en github.com/rack/rack/issues/864#issuecomment-104706555
zhisme

18

su pregunta podría estar relacionada con esta pregunta: ¿Cómo puedo establecer dinámicamente el tiempo de vencimiento para una sesión basada en cookies en Rails?

uno de los comentarios apunta a Desactivación de SlideSessions :

"... Si necesita establecer un período de vencimiento para las sesiones a través de todos los controladores en su aplicación, simplemente agregue la siguiente opción a su archivo config / intializers / session_store.rb:

:expire_after => 60.minutes

Si necesita establecer un tiempo de vencimiento diferente en diferentes controladores o acciones, use el siguiente código en acción o algún before_filter:

request.session_options = request.session_options.dup
request.session_options[:expire_after]= 5.minutes
request.session_options.freeze

La duplicación del hash es necesaria solo porque ya está congelado en ese punto, aunque la modificación de al menos: expire_after es posible y funciona sin problemas ... "

Espero que eso ayude. :)


¿Se puede hacer esto también para la tienda de sesiones de ActiveRecord?
Lohith MV

4

Vale la pena señalar que a partir de ahora es imposible establecer una hora de inicio para una cookie. Un conjunto de cookies siempre está activo de inmediato.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.