Wie setze ich ein Rails-Cookie so, dass es zu einem bestimmten Datum startet und / oder abläuft?
Antworten:
Auszüge aus der Rails 5-Dokumentation :
Cookies werden über ActionController # Cookies gelesen und geschrieben.
Die gelesenen Cookies sind diejenigen, die zusammen mit der Anfrage empfangen wurden. Die geschriebenen Cookies werden mit der Antwort gesendet. Durch das Lesen eines Cookies wird das Cookie-Objekt selbst nicht zurückerhalten, sondern nur der Wert, den es enthält.
Beispiele für das Schreiben:
# 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"
[...]
Die Optionssymbole zum Setzen von Cookies sind:
:expires
- Der Zeitpunkt, zu dem dieses Cookie als Time- oder ActiveSupport :: Duration-Objekt abläuft.[...]
cookies[:login] = { value: "JX-122", expires: 3.months }
würde Fehler auslösen. aber das wird nicht. cookies[:login] = { value: "JX-122", expires: 3.months.from_now }
Siehe für Details github.com/rack/rack/issues/864#issuecomment-104706555
Ihre Frage könnte mit dieser Frage zusammenhängen: Wie stelle ich die Ablaufzeit für eine Cookie-basierte Sitzung in Rails dynamisch ein?
Einer der Kommentare verweist auf " Verwerfen von SlideSessions" :
"..Wenn Sie die Ablaufdauer für Sitzungen über alle Controller in Ihrer Anwendung festlegen müssen, fügen Sie einfach die folgende Option zu Ihrer Datei config / intializers / session_store.rb hinzu:
:expire_after => 60.minutes
Wenn Sie in verschiedenen Controllern oder Aktionen unterschiedliche Ablaufzeiten festlegen müssen, verwenden Sie den folgenden Code in Aktion oder einen before_filter:
request.session_options = request.session_options.dup request.session_options[:expire_after]= 5.minutes request.session_options.freeze
Das Duplizieren des Hashs ist nur erforderlich, weil er zu diesem Zeitpunkt bereits eingefroren ist, obwohl eine Änderung von mindestens: expire_after möglich ist und einwandfrei funktioniert ... "
Ich hoffe das hilft. :) :)