Встановіть дату початку та термін дії файлів cookie Rails


Відповіді:


200

Витяги з документації 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.

[...]



8
@Senthil, Якщо ви отримуєте щось із іншої статті (в даному випадку "як є" із документації reils), будь ласка, дайте посилання на джерело.
sameera207

1
також: опція expires має бути екземпляром Time. 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
zhisme

18

Ваше запитання може бути пов'язане з цим питанням: Як я динамічно встановлюю час закінчення терміну дії сеансу на основі файлів 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 можлива і працює бездоганно ... "

Я сподіваюся, що це допоможе. :)


Чи можна це зробити і для сховища сесій ActiveRecord?
Лохіт М. В.

4

Варто зазначити, що станом на сьогодні неможливо встановити час початку файлу cookie. Набір файлів cookie завжди активний негайно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.