Установить дату начала и срок действия файлов cookie Rails

Как установить cookie-файл Rails для запуска и / или истечения срока действия в определенную дату?

3 ответа

Решение

Выдержки из документации по 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.

[...]

Ваш вопрос может быть связан с этим вопросом: Как мне динамически установить время истечения для сеанса на основе файлов 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 и работает без нареканий..."

Надеюсь, это поможет.:)

Стоит отметить, что на данный момент невозможно установить время начала для куки. Набор файлов cookie всегда активен немедленно.

Другие вопросы по тегам