Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveSupport::MessageVerifiers

Родитель:
Messages::RotationCoordinator

Атрибуты

transitional[RW]

Если true, первые два набора опций вращения меняются местами при построении верификаторов сообщений. Например, при следующей конфигурации, верификаторы сообщений будут генерировать сообщения, используя serializer: Marshal, url_safe: true, и смогут проверять сообщения, сгенерированные с использованием любого из трёх наборов опций:

verifiers = ActiveSupport::MessageVerifiers.new { ... }
verifiers.rotate(serializer: JSON, url_safe: true)
verifiers.rotate(serializer: Marshal, url_safe: true)
verifiers.rotate(serializer: Marshal, url_safe: false)
verifiers.transitional = true

Это может быть полезно при выполнении постепенного развертывания приложения, в котором серверы, которые ещё не обновлены, должны по-прежнему иметь возможность проверять сообщения от обновлённых серверов. В такой ситуации сначала выполните постепенное развертывание с новым вращением (например, serializer: JSON, url_safe: true) в качестве первого вращения и transitional = true. Затем, после обновления всех серверов, выполните второе постепенное развертывание с transitional = false.

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

[](salt) Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 47
    

Возвращает MessageVerifier, настроенный с секретом, полученным из заданной salt, и опциями из rotate. Экземпляры MessageVerifier будут кэшированы, поэтому одинаковый salt вернёт тот же экземпляр.

[]=(salt, verifier) Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 55
    

Перезаписывает экземпляр MessageVerifier, связанный с заданным salt.

clear_rotations Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 113
    

Очищает список наборов опций.

initialize(&secret_generator) Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 31
    

Инициализирует новый экземпляр. secret_generator должен принимать соль и возвращать подходящий секрет (строка). secret_generator также может принимать произвольные ключевые аргументы. Если rotate вызывается с любыми опциями, соответствующими этим ключевым аргументам, эти опции будут переданы secret_generator вместо верификатора сообщений.

verifiers = ActiveSupport::MessageVerifiers.new do |salt, base:|
  MySecretGenerator.new(base).generate(salt)
end

verifiers.rotate(base: "...")
on_rotation(&callback) Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 119
    

Устанавливает обратный вызов для вызова, когда сообщение проверяется с использованием набора опций, отличного от первого.

Например, этот обратный вызов может регистрировать каждый вызов и, таким образом, указывать, используются ли старые наборы опций или их можно удалить из вращения.

rotate(**options) Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 61
    

Добавляет options в список наборов опций. Messages будет подписано с использованием первого набора в списке. При проверке, однако, каждый набор будет пробоваться по порядку, пока не произойдёт успех.

Обратите внимание, что опция :secret_generator может указать другой генератор секретов, чем тот, который был первоначально указан. Генератор секретов должен отвечать на call, принимать соль и возвращать подходящий секрет (строка). Генератор секретов также может принимать произвольные ключевые аргументы.

Если какие-либо опции соответствуют ключевым аргументам действующего генератора секретов, эти опции будут переданы генератору секретов вместо верификатора сообщений.

Для тонкой настройки вращения по каждой соли поддерживается форма блока. Блок получит соль и должен вернуть соответствующий набор опций Hash. Блок также может вернуть nil для обозначения того, что вращение не применяется к заданной соли. Например:

verifiers = ActiveSupport::MessageVerifiers.new { ... }

verifiers.rotate do |salt|
  case salt
  when :foo
    { serializer: JSON, url_safe: true }
  when :bar
    { serializer: Marshal, url_safe: true }
  end
end

verifiers.rotate(serializer: Marshal, url_safe: false)

# Uses `serializer: JSON, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
verifiers[:foo]

# Uses `serializer: Marshal, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
verifiers[:bar]

# Uses `serializer: Marshal, url_safe: false`.
verifiers[:baz]
rotate_defaults Показать исходный код
# File activesupport/lib/active_support/message_verifiers.rb, line 107
    

Вызывает rotate с опциями по умолчанию.

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

Spec-Zone.ru

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