2009-08-05 18 views

Respuesta

188

Las cookies se leen y escriben a través del ActionDispatch#cookies (ActionController # cookies en Rails 3 y siguientes). El texto en esta respuesta se cita del enlace de documentación de la API anterior.

Las cookies que se leen son las recibidas junto con la solicitud, las cookies que se escriben se enviarán con la respuesta. Leer una cookie no devuelve el objeto cookie, solo el valor que tiene.

Ejemplos para la escritura:

# Sets a simple session cookie. 
    cookies[:user_name] = "david" 

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

Ejemplos de lectura:

cookies[:user_name] # => "david" 
    cookies.size  # => 2 

ejemplo para borrar:

cookies.delete :user_name 

Tenga en cuenta que si especifica un: dominio al establecer una cookie , también debe especificar el dominio al eliminar la cookie:

cookies[:key] = { 
    :value => 'a yummy cookie', 
    :expires => 1.year.from_now, 
    :domain => 'domain.com' 
} 

cookies.delete(:key, :domain => 'domain.com') 

La opción símbolos para configurar las cookies son:

* :value - The cookie’s value or list of values (as an array). 
* :path - The path for which this cookie applies. Defaults to the root of the application. 
* :domain - The domain for which this cookie applies. 
* :expires - The time at which this cookie expires, as a Time object. 
* :secure - Whether this cookie is a only transmitted to HTTPS servers. Default is false. 
* :httponly - Whether this cookie is accessible via scripting or only HTTP. Defaults to false. 
+21

Todo esto en los documentos: http: //api.rubyonrails.org/classes/ActionDispatch/Cookies.html –

+6

@Senthil, si obtiene algo de otro artículo (en este caso 'tal cual' de los documentos de rieles), proporcione una referencia al origen. – sameera207

17

su pregunta podría estar relacionado con esta pregunta: How to I dynamically set the expiry time for a cookie-based session in Rails

uno de los Puntos de Deprecating SlideSessions:

"..Si necesita establecer el período de caducidad para sesiones mediante todos los controladores de en su aplicación, sólo tiene que añadir siguiente opción a su config/intializers/session_store.rb archivo:

:expire_after => 60.minutes 

Si es necesario establecer diferentes tiempos de de caducidad en diferentes controladores o acciones, el uso el siguiente código en la 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 

duplicación del hash solamente se necesita debido a que ya está congelado en ese punto , a pesar de que la modificación de al menos : expire_after es posible y funciona a la perfección ..."

Espero que ayude. :)

3

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.

Cuestiones relacionadas