класс ActiveSupport::MessageEncryptors
Атрибуты
Если значение true, при создании шифровальщиков сообщений первые два набора параметров вращения меняются местами. Например, при следующей конфигурации, шифровальщики сообщений будут шифровать сообщения с помощью serializer: Marshal, url_safe: true, и смогут расшифровывать сообщения, которые были зашифрованы с использованием любого из трёх наборов параметров:
encryptors = ActiveSupport::MessageEncryptors.new { ... }
encryptors.rotate(serializer: JSON, url_safe: true)
encryptors.rotate(serializer: Marshal, url_safe: true)
encryptors.rotate(serializer: Marshal, url_safe: false)
encryptors.transitional = true Это может быть полезно при выполнении постепенной замены приложения, в котором серверы, которые ещё не были обновлены, должны по-прежнему иметь возможность расшифровывать сообщения с обновлённых серверов. В такой ситуации сначала выполните постепенную замену с новым вращением (например, serializer: JSON, url_safe: true) в качестве первого вращения и transitional = true. Затем, после того, как все серверы будут обновлены, выполните вторую постепенную замену с transitional = false.
Открытые методы экземпляра
# File activesupport/lib/active_support/message_encryptors.rb, line 48
Возвращает MessageEncryptor, сконфигурированный с секретом, полученным из заданного salt, и параметрами из rotate. Экземпляры MessageEncryptor будут кешированы, поэтому одинаковый salt будет возвращать тот же экземпляр.
# File activesupport/lib/active_support/message_encryptors.rb, line 56
Переопределяет экземпляр MessageEncryptor, связанный с заданным salt.
# File activesupport/lib/active_support/message_encryptors.rb, line 117
Очищает список наборов параметров.
# File activesupport/lib/active_support/message_encryptors.rb, line 31
Инициализирует новый экземпляр. secret_generator должен принимать соль и secret_length аргумент, и возвращать подходящий секрет (строку) или секреты (массив строк). secret_generator также может принимать другие произвольные аргументы. Если rotate вызывается с любыми параметрами, соответствующими этим аргументам, эти параметры будут переданы secret_generator вместо шифровальщика сообщений.
encryptors = ActiveSupport::MessageEncryptors.new do |salt, secret_length:, base:| MySecretGenerator.new(base).generate(salt, secret_length) end encryptors.rotate(base: "...")
# File activesupport/lib/active_support/message_encryptors.rb, line 123
Устанавливает обратный вызов для вызова при расшифровке сообщения с использованием набора параметров, отличного от первого.
Например, этот обратный вызов может регистрировать каждый вызов и, таким образом, указывать, используются ли старые наборы параметров или их можно удалить из вращения.
# File activesupport/lib/active_support/message_encryptors.rb, line 62
Добавляет options в список наборов параметров. Messages будет зашифрован с помощью первого набора в списке. Однако при расшифровке каждый набор будет проверяться в порядке, пока один не увенчается успехом.
Важно, что параметр :secret_generator может указать генератор секретов, отличный от первоначально заданного. Генератор секретов должен отвечать на call, принимать соль и secret_length аргумент, и возвращать подходящий секрет (строку) или секреты (массив строк). Генератор секретов также может принимать другие произвольные аргументы.
Если какие-либо параметры соответствуют аргументам действующего генератора секретов, эти параметры будут переданы генератору секретов, а не шифровальщику сообщений.
Для тонкой настройки вращения по каждой соли поддерживается форма блока. Блок получит соль и должен вернуть подходящие параметры Hash. Блок также может вернуть nil, чтобы указать, что вращение не применяется к заданной соли. Например:
encryptors = ActiveSupport::MessageEncryptors.new { ... }
encryptors.rotate do |salt|
case salt
when :foo
{ serializer: JSON, url_safe: true }
when :bar
{ serializer: Marshal, url_safe: true }
end
end
encryptors.rotate(serializer: Marshal, url_safe: false)
# Uses `serializer: JSON, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
encryptors[:foo]
# Uses `serializer: Marshal, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
encryptors[:bar]
# Uses `serializer: Marshal, url_safe: false`.
encryptors[:baz] # File activesupport/lib/active_support/message_encryptors.rb, line 111
Вызывает rotate с параметрами по умолчанию.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.