web-dev-qa-db-fra.com

Définir la date de début et la date d'expiration pour les cookies Rails

Comment définir un cookie Rails pour démarrer et/ou expirer à une certaine date?

83
nirmal

Extraits de documentation Rails 5 :

Les cookies sont lus et écrits via les cookies ActionController #.

Les cookies lus sont ceux reçus avec la demande, les cookies en cours d'écriture 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.
# 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"

[...]

Les symboles d'option pour la configuration des cookies sont:

  • :expires - L'heure à laquelle ce cookie expire, en tant qu'objet Time ou ActiveSupport :: Duration.

[...]

196

votre question pourrait être liée à cette question: Comment puis-je définir dynamiquement le délai d'expiration pour une session basée sur les cookies dans Rails

l'un des commentaires indique Deprecating SlideSessions :

"..Si vous devez définir une période d'expiration pour les sessions via tous les contrôleurs de votre application, ajoutez simplement l'option suivante à votre fichier config/intializers/session_store.rb:

:expire_after => 60.minutes

Si vous devez définir un temps d'expiration différent dans différents contrôleurs ou actions, utilisez le code suivant en action ou un certain before_filter:

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

La duplication du hachage n'est nécessaire que parce qu'il est déjà gelé à ce stade, même si la modification d'au moins: expire_after est possible et fonctionne parfaitement ... "

J'espère que ça aide. :)

18
pageman

Il convient de noter qu'à partir de maintenant, il est impossible de définir une heure de début pour un cookie. Un jeu de cookies est toujours actif immédiatement.

3
eltiare