¿Cómo configuro una cookie de Rails para que comience y / o caduque en una fecha determinada?
¿Cómo configuro una cookie de Rails para que comience y / o caduque en una fecha determinada?
Respuestas:
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.[...]
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
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. :)