2009-08-05 9 views

Répondre

188

Les cookies sont lus et écrits via ActionDispatch#cookies (ActionController # cookies dans Rails 3 et ci-dessous). Le texte de cette réponse est cité dans le lien API docs ci-dessus. Les cookies en cours de lecture sont ceux reçus avec la demande, les cookies étant écrits seront envoyés avec la réponse. La lecture d'un cookie ne récupère pas l'objet cookie lui-même, juste la valeur qu'il contient.

Exemples d'écriture:

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

Exemples de lecture:

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

Exemple pour la suppression:

cookies.delete :user_name 

S'il vous plaît noter que si vous spécifiez un: domaine lors de la création d'un cookie , vous devez également spécifier le domaine lors de la suppression du cookie:

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

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

Les symboles d'option pour le réglage des cookies sont:

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

Tout cela est dans les docs: http: //api.rubyonrails.org/classes/ActionDispatch/Cookies.html –

+6

@Senthil, Si vous obtenez quelque chose d'un autre article (dans ce cas 'tel quel' de rails docs), S'il vous plaît donner une référence à l'origine. – sameera207

17

votre question pourrait être liée à cette question: How to I dynamically set the expiry time for a cookie-based session in Rails

l'un des points de commentaire à Deprecating SlideSessions:

"..Si vous devez définir la période d'expiration pour les sessions à travers tous les contrôleurs dans votre application, il suffit d'ajouter l'option suivante à votre config/intializers/session_store.rb fichier:

:expire_after => 60.minutes 

Si vous avez besoin de définir différents temps d'expiration dans différents contrôleurs ou actions, l'utilisation le code suivant dans une action ou d'un before_filter:

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

Duplication du hachage est nécessaire que car il est déjà gelé à ce moment , même si la modification d'au moins : expire_after est possible et fonctionne parfaitement ... »

J'espère que cela aide. :)

3

Il est à noter que pour le moment, il est impossible de définir une heure de début pour un cookie. Un ensemble de cookies est toujours actif immédiatement.

Questions connexes