Jak ustawić plik cookie Railsów, aby zaczynał się i / lub tracił ważność w określonym dniu?
Jak ustawić plik cookie Railsów, aby zaczynał się i / lub tracił ważność w określonym dniu?
Odpowiedzi:
Fragmenty dokumentacji Rails 5 :
Pliki cookie są odczytywane i zapisywane przez ActionController # cookies.
Odczytywane pliki cookie to te otrzymane wraz z żądaniem, zapisane pliki cookie zostaną wysłane wraz z odpowiedzią. Odczytanie pliku cookie nie powoduje odzyskania samego obiektu cookie, a jedynie jego wartość.
Przykłady pisania:
# 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"
[…]
Symbole opcji ustawienia plików cookie to:
:expires
- Czas, w którym wygasa ten plik cookie, jako obiekt Time lub ActiveSupport :: Duration.[…]
cookies[:login] = { value: "JX-122", expires: 3.months }
spowodowałoby błąd. ale to nie będzie. cookies[:login] = { value: "JX-122", expires: 3.months.from_now }
zobacz szczegóły github.com/rack/rack/issues/864#issuecomment-104706555
Twoje pytanie może być związane z tym pytaniem: Jak dynamicznie ustawić czas wygaśnięcia sesji opartej na plikach cookie w Railsach
jeden z komentarzy wskazuje na wycofywanie sesji slajdów :
"..Jeśli chcesz ustawić okres ważności sesji dla wszystkich kontrolerów w aplikacji, po prostu dodaj następującą opcję do pliku config / intializers / session_store.rb:
:expire_after => 60.minutes
Jeśli chcesz ustawić inny czas wygaśnięcia w różnych kontrolerach lub akcjach, użyj następującego kodu w akcji lub jakiegoś before_filter:
request.session_options = request.session_options.dup request.session_options[:expire_after]= 5.minutes request.session_options.freeze
Duplikacja hasha jest potrzebna tylko dlatego, że jest już zamrożona w tym momencie, mimo że modyfikacja co najmniej: expire_after jest możliwa i działa bez zarzutu ... "
Mam nadzieję że to pomogło. :)