Spec-Zone.ru › Ruby on Rails 6.1

модуль ActionDispatch::Cookies::ChainedCookieJars

Включите в cookie-контейнер для возможности цепочки, например, cookies.permanent.signed.

Открытые методы экземпляра

encrypted() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 245
def encrypted
  @encrypted ||= EncryptedKeyRotatingCookieJar.new(self)
end

Возвращает контейнер, который автоматически зашифрует значения cookie перед отправкой клиенту и расшифрует их для чтения. Если cookie была повреждена пользователем (или третьей стороной), вернется nil.

Если config.action_dispatch.encrypted_cookie_salt и config.action_dispatch.encrypted_signed_cookie_salt оба установлены, устаревшие cookie, зашифрованные с помощью HMAC AES-256-CBC, будут прозрачно обновлены.

Этот контейнер требует, чтобы вы установили подходящий секрет для проверки на secret_key_base вашего приложения.

Пример:

cookies.encrypted[:discount] = 45
# => Set-Cookie: discount=DIQ7fw==--K3n//8vvnSbGq9dA--7Xh91HfLpwzbj1czhBiwOg==; path=/

cookies.encrypted[:discount] # => 45
permanent() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 211
def permanent
  @permanent ||= PermanentCookieJar.new(self)
end

Возвращает контейнер, который автоматически установит назначенным cookie срок действия через 20 лет. Пример:

cookies.permanent[:prefers_open_id] = true
# => Set-Cookie: prefers_open_id=true; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT

Этот контейнер предназначен только для записи. Вы будете читать постоянные cookie через обычный аксессор.

Этот контейнер также позволяет цепочку с подписанным контейнером, поэтому вы можете установить постоянные, подписанные cookie. Примеры:

cookies.permanent.signed[:remember_me] = current_user.id
# => Set-Cookie: remember_me=BAhU--848956038e692d7046deab32b7131856ab20e14e; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
signed() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 227
def signed
  @signed ||= SignedKeyRotatingCookieJar.new(self)
end

Возвращает контейнер, который автоматически сгенерирует подписанную версию значения cookie и проверит её при повторном чтении из cookie. Это полезно для создания cookie со значениями, которые пользователь не должен изменять. Если подписанная cookie была повреждена пользователем (или третьей стороной), вернется nil.

Этот контейнер требует, чтобы вы установили подходящий секрет для проверки на secret_key_base вашего приложения.

Пример:

cookies.signed[:discount] = 45
# => Set-Cookie: discount=BAhpMg==--2c1c6906c90a3bc4fd54a51ffb41dffa4bf6b5f7; path=/

cookies.signed[:discount] # => 45
signed_or_encrypted() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 251
def signed_or_encrypted
  @signed_or_encrypted ||=
    if request.secret_key_base.present?
      encrypted
    else
      signed
    end
end

Возвращает контейнер signed или encrypted, отдавая предпочтение encrypted, если secret_key_base установлено. Используется ActionDispatch::Session::CookieStore, чтобы избежать необходимости введения новых контейнеров cookie.

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

Spec-Zone.ru

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