Як встановити файл cookie Rails для запуску та / або закінчення терміну дії на певну дату?
Як встановити файл cookie Rails для запуску та / або закінчення терміну дії на певну дату?
Відповіді:
Витяги з документації Rails 5 :
Файли cookie читаються та записуються через файли cookie ActionController #.
Файли cookie, які читаються, - це ті, що отримані разом із запитом; файли cookie, що записуються, будуть розіслані з відповіддю. Читання файлу cookie не повертає сам об’єкт cookie, а лише значення, яке воно має.
Приклади написання:
# 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"
[...]
Символами для встановлення файлів cookie є:
:expires
- Час, коли термін дії цього файлу cookie закінчується, як об’єкт Time або ActiveSupport :: Duration.[...]
cookies[:login] = { value: "JX-122", expires: 3.months }
призведе до помилки. але це не буде. cookies[:login] = { value: "JX-122", expires: 3.months.from_now }
див. докладніше github.com/rack/rack/issues/864#issuecomment-104706555
Ваше запитання може бути пов'язане з цим питанням: Як я динамічно встановлюю час закінчення терміну дії сеансу на основі файлів cookie в Rails
один із коментарів вказує на припинення слайд-сесій :
"..Якщо вам потрібно встановити термін дії сеансів через усі контролери у вашій програмі, просто додайте наступну опцію у файл config / intializers / session_store.rb:
:expire_after => 60.minutes
Якщо вам потрібно встановити різний час закінчення терміну дії в різних контролерах або діях, використовуйте такий код у дії або якийсь before_filter:
request.session_options = request.session_options.dup request.session_options[:expire_after]= 5.minutes request.session_options.freeze
Дублювання хешу потрібно лише тому, що на той момент він уже заморожений, хоча модифікація принаймні: expire_after можлива і працює бездоганно ... "
Я сподіваюся, що це допоможе. :)