2009-08-05 1 views

risposta

188

I cookie vengono letti e scritti tramite ActionDispatch#cookies (cookie # ControlController in Rails 3 e versioni precedenti). Il testo di questa risposta è citato dal link dei documenti API sopra.

I cookie letti sono quelli ricevuti insieme alla richiesta, i cookie in fase di scrittura verranno inviati con la risposta. La lettura di un cookie non restituisce l'oggetto stesso, ma solo il valore che detiene.

Esempi di scrittura:

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

Esempi per la lettura:

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

Esempio per la cancellazione:

cookies.delete :user_name 

prega di notare che se si specifica un: dominio quando si imposta un cookie , devi anche specificare il dominio quando si elimina il cookie:

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

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

L'opzione simboli per impostare i cookie sono:

* :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

Questo è tutto nella documentazione: http: //api.rubyonrails.org/classes/ActionDispatch/Cookies.html –

+6

@Senthil, Se stai ricevendo qualcosa da un altro articolo (in questo caso "così com'è" dai documenti rails), per favore fornisci un riferimento all'origine. – sameera207

17

tua domanda potrebbe essere correlato a questa domanda: How to I dynamically set the expiry time for a cookie-based session in Rails

uno dei punti di commenti a Deprecating SlideSessions:

"..Se è necessario impostare il periodo di scadenza per le sessioni attraverso tutti i controller nell'applicazione, è sufficiente aggiungere il seguente opzione per il tuo config/intializers/session_store.rb del file:

:expire_after => 60.minutes 

Se è necessario impostare orario diverso scadenza in diverse controllori o azioni, l'uso il seguente codice in azione o qualche before_filter:

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

duplicazione del hash è soltanto necessario perché è già congelato in quel punto, anche se la modifica pari ad almeno : expire_after è possibile e funziona perfettamente ..."

Mi auguro che aiuta. :)

3

Vale la pena notare che al momento è impossibile impostare un'ora di inizio per un cookie. Un set di cookie è sempre attivo immediatamente.