модуль ActiveRecord::Encryption::Contexts
ActiveRecord::Encryption использует контексты шифрования для конфигурирования различных сущностей, используемых для шифрования/дешифрования в данный момент времени.
По умолчанию библиотека использует контекст шифрования по умолчанию. Это Context, который настраивается изначально через config.active_record.encryption параметры. Пользователи библиотеки могут определять вложенные контексты шифрования при выполнении блоков кода.
См. Context.
Открытые методы экземпляра
# File activerecord/lib/active_record/encryption/contexts.rb, line 62 def context self.current_custom_context || self.default_context end
Возвращает текущий контекст. По умолчанию возвращает текущий контекст.
# File activerecord/lib/active_record/encryption/contexts.rb, line 66 def current_custom_context self.custom_contexts&.last end
# File activerecord/lib/active_record/encryption/contexts.rb, line 57 def protecting_encrypted_data(&block) with_encryption_context encryptor: ActiveRecord::Encryption::EncryptingOnlyEncryptor.new, frozen_encryption: true, &block end
Выполняет предоставленный блок в контексте шифрования, где:
-
Чтение зашифрованного содержимого вернёт его зашифрованный текст.
-
Запись зашифрованного содержимого завершится ошибкой.
# File activerecord/lib/active_record/encryption/contexts.rb, line 70 def reset_default_context self.default_context = Context.new end
# File activerecord/lib/active_record/encryption/contexts.rb, line 33
def with_encryption_context(properties)
self.custom_contexts ||= []
self.custom_contexts << default_context.dup
properties.each do |key, value|
self.current_custom_context.send("#{key}=", value)
end
yield
ensure
self.custom_contexts.pop
end Настраивает пользовательский контекст шифрования для использования при выполнении предоставленного блока кода.
Он поддерживает переопределение всех свойств, определенных в Context.
Пример:
ActiveRecord::Encryption.with_encryption_context(encryptor: ActiveRecord::Encryption::NullEncryptor.new) do ... end
Encryption контексты могут быть вложены.
# File activerecord/lib/active_record/encryption/contexts.rb, line 49 def without_encryption(&block) with_encryption_context encryptor: ActiveRecord::Encryption::NullEncryptor.new, &block end
Выполняет предоставленный блок в контексте шифрования, где шифрование отключено:
-
Чтение зашифрованного содержимого вернёт его зашифрованный текст.
-
Запись зашифрованного содержимого запишет его открытый текст.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.