Spec-Zone.ru › Ruby on Rails 4.2

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

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

Публичные методы экземпляров

encrypted() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 159
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 перед отправкой клиенту и расшифрует их при чтении. Если 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
permanent() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 117
def permanent
  @permanent ||= PermanentCookieJar.new(self, @key_generator, @options)
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 136
def signed
  @signed ||=
    if @options[:upgrade_legacy_signed_cookies]
      UpgradeLegacySignedCookieJar.new(self, @key_generator, @options)
    else
      SignedCookieJar.new(self, @key_generator, @options)
    end
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
signed_or_encrypted() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 170
def signed_or_encrypted
  @signed_or_encrypted ||=
    if @options[:secret_key_base].present?
      encrypted
    else
      signed
    end
end

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

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

Spec-Zone.ru

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