модуль ActionDispatch::Cookies::ChainedCookieJars
Включить в cookie-хранилище для цепочки, например, cookies.permanent.signed
Методы экземпляра публичного класса
Возвращает хранилище, которое автоматически будет шифровать значения cookie перед отправкой клиенту и расшифровывать их для чтения. Если cookie была повреждена пользователем (или третьей стороной), будет возвращено значение nil.
Если secrets.secret_key_base и secrets.secret_token (устаревший) оба установлены, устаревшие cookie, подписанные с помощью старого генератора ключей, будут прозрачно обновлены.
Для этого хранилища необходимо установить подходящий секрет для проверки в secrets.secret_key_base вашего приложения.
Пример:
cookies.encrypted[:discount] = 45 # => Set-Cookie: discount=ZS9ZZ1R4cG1pcUJ1bm80anhQang3dz09LS1mbDZDSU5scGdOT3ltQ2dTdlhSdWpRPT0%3D--ab54663c9f4e3bc340c790d6d2b71e92f5b60315; path=/ cookies.encrypted[:discount] # => 45
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 157
def encrypted
@encrypted ||=
if @options[:upgrade_legacy_signed_cookies]
UpgradeLegacyEncryptedCookieJar.new(self, @key_generator, @options)
else
EncryptedCookieJar.new(self, @key_generator, @options)
end
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 115 def permanent @permanent ||= PermanentCookieJar.new(self, @key_generator, @options) end
Возвращает хранилище, которое автоматически сгенерирует подписанную версию значения cookie и проверит его при повторном чтении из cookie. Это полезно для создания cookie с значениями, которые пользователь не должен изменять. Если подписанный cookie был изменен пользователем (или третьей стороной), будет возвращено значение nil.
Если secrets.secret_key_base и secrets.secret_token (устаревший) оба установлены, устаревшие cookie, подписанные с помощью старого генератора ключей, будут прозрачно обновлены.
Для этого хранилища необходимо установить подходящий секрет для проверки в secrets.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 134
def signed
@signed ||=
if @options[:upgrade_legacy_signed_cookies]
UpgradeLegacySignedCookieJar.new(self, @key_generator, @options)
else
SignedCookieJar.new(self, @key_generator, @options)
end
end Возвращает хранилище signed или encrypted, отдавая предпочтение encrypted, если secret_key_base установлено. Используется ActionDispatch::Session::CookieStore для избежания необходимости введения новых хранилищ cookie.
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 168
def signed_or_encrypted
@signed_or_encrypted ||=
if @options[:secret_key_base].present?
encrypted
else
signed
end
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.