класс ActiveSupport::MessageVerifiers
Атрибуты
Если 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.
Открытые методы экземпляров
# File activesupport/lib/active_support/message_verifiers.rb, line 47
Возвращает MessageVerifier, настроенный с секретом, полученным из заданной salt, и опциями из rotate. Экземпляры MessageVerifier будут кэшированы, поэтому одинаковый salt вернёт тот же экземпляр.
# File activesupport/lib/active_support/message_verifiers.rb, line 55
Перезаписывает экземпляр MessageVerifier, связанный с заданным salt.
# File activesupport/lib/active_support/message_verifiers.rb, line 113
Очищает список наборов опций.
# 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: "...")
# File activesupport/lib/active_support/message_verifiers.rb, line 119
Устанавливает обратный вызов для вызова, когда сообщение проверяется с использованием набора опций, отличного от первого.
Например, этот обратный вызов может регистрировать каждый вызов и, таким образом, указывать, используются ли старые наборы опций или их можно удалить из вращения.
# 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] # File activesupport/lib/active_support/message_verifiers.rb, line 107
Вызывает rotate с опциями по умолчанию.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.