Comment configurer un cookie Rails pour qu'il démarre et / ou expire à une certaine date?
la source
Comment configurer un cookie Rails pour qu'il démarre et / ou expire à une certaine date?
Extraits de la documentation Rails 5 :
Les cookies sont lus et écrits via les cookies ActionController #.
Les cookies en cours de lecture 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, mais uniquement 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.[...]
votre question pourrait être liée à cette question: Comment définir dynamiquement l'heure d'expiration d'une session basée sur les cookies dans Rails
l'un des commentaires indique l' abandon des sessions SlideSessions :
"..Si vous avez besoin de 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 une heure d'expiration différente dans différents contrôleurs ou actions, utilisez le code suivant en action ou certains 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à figé à ce stade, même si la modification d'au moins: expire_after est possible et fonctionne parfaitement ... "
J'espère que cela aide. :)
Il est à noter qu'à l'heure actuelle, il est impossible de définir une heure de début pour un cookie. Un ensemble de cookies est toujours actif immédiatement.
cookies[:login] = { value: "JX-122", expires: 3.months }
soulèverait une erreur. mais ce ne sera pas le cas.cookies[:login] = { value: "JX-122", expires: 3.months.from_now }
voir pour plus de détails github.com/rack/rack/issues/864#issuecomment-104706555