модуль ActionDispatch::Cookies::ChainedCookieJars
Включите в cookie-контейнер для возможности цепочки, например, cookies.permanent.signed.
Открытые методы экземпляра
# 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
# 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
# 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
# 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.