Spec-Zone.ru › Ruby on Rails 8.1

класс ActionDispatch::Session::CookieStore

Родительский класс:
ActionDispatch::Session::AbstractSecureStore

Action Dispatch CookieStore

Это хранилище сеансов на основе файлов cookie используется в Rails по умолчанию. Оно значительно быстрее альтернативных вариантов.

Сеансы обычно содержат не более идентификатора пользователя и сообщения flash; оба значения помещаются в ограничение размера файла cookie в 4096 байт. Если попытаться сохранить более 4096 байт данных, будет вызвано исключение CookieOverflow.

Файл cookie, используемый для хранения данных, автоматически настраивается с учетом конфигурации вашего приложения, чтобы выбрать наилучший возможный вариант.

Ваши файлы cookie будут зашифрованы с использованием secret_key_base вашего приложения. Это более надежно, чем подписанные файлы cookie: зашифрованные файлы cookie нельзя изменить или прочитать. Этот вариант используется по умолчанию начиная с Rails 4.

Настройте хранилище сеансов в инициализаторе:

Rails.application.config.session_store :cookie_store, key: '_your_app_session'

В средах разработки и тестирования secret_key_base вашего приложения создается с помощью Rails и сохраняется во временном файле в tmp/local_secret.txt. Во всех остальных средах оно хранится в зашифрованном виде в файле config/credentials.yml.enc.

Если ваше приложение не было обновлено до значений по умолчанию Rails 5.2, secret_key_base будет находиться в старом файле config/secrets.yml.

Обратите внимание: изменение secret_key_base приведет к аннулированию всех существующих сеансов. Кроме того, прежде чем менять его, убедитесь, что вы не полагаетесь на возможность декодировать подписанные файлы cookie, созданные вашим приложением, во внешних приложениях или JavaScript.

Поскольку CookieStore расширяет Rack::Session::Abstract::Persisted, многие описанные там параметры можно использовать для настройки создаваемого файла cookie сеанса. Например:

Rails.application.config.session_store :cookie_store, expire_after: 14.days

установит для файла cookie сеанса автоматический срок действия через 14 дней после создания. К другим полезным параметрам относятся :key, :secure, :httponly и :same_site.

Общедоступные методы класса

new (app, options = {}) Показать исходный код
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 64
def initialize(app, options = {})
  options[:cookie_only] = true
  options[:same_site] = DEFAULT_SAME_SITE if !options.key?(:same_site)
  super
end
Вызывает метод суперкласса ActionDispatch::Session::Compatibility::new

Общедоступные методы экземпляра

delete_session (req, session_id, options) Показать исходный код
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 70
def delete_session(req, session_id, options)
  new_sid = generate_sid unless options[:drop]
  # Reset hash and Assign the new session id
  req.set_header("action_dispatch.request.unsigned_session_cookie", new_sid ? { "session_id" => new_sid.public_id } : {})
  new_sid
end
load_session (req) Показать исходный код
# File actionpack/lib/action_dispatch/middleware/session/cookie_store.rb, line 77
def load_session(req)
  stale_session_check! do
    data = unpacked_cookie_data(req)
    data = persistent_session_id!(data)
    [Rack::Session::SessionId.new(data["session_id"]), data]
  end
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API