module ActionDispatch::Cookies::ChainedCookieJars
Подключите к хранилищу cookie, чтобы разрешить цепочки вызовов, например cookies.permanent.signed.
Общедоступные методы экземпляра
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 274 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 234 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, поэтому можно устанавливать постоянные подписанные 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 253 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 281
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–2021 David Heinemeier Hansson
Licensed under the MIT License.