Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveRecord::Encryption::Contexts

ActiveRecord::Encryption использует контексты шифрования для конфигурирования различных сущностей, используемых для шифрования/дешифрования в данный момент времени.

По умолчанию библиотека использует контекст шифрования по умолчанию. Это Context, который настраивается изначально через config.active_record.encryption параметры. Пользователи библиотеки могут определять вложенные контексты шифрования при выполнении блоков кода.

См. Context.

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

context() Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 62
def context
  self.current_custom_context || self.default_context
end

Возвращает текущий контекст. По умолчанию возвращает текущий контекст.

current_custom_context() Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 66
def current_custom_context
  self.custom_contexts&.last
end
protecting_encrypted_data(&block) Показать исходный код
# 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

Выполняет предоставленный блок в контексте шифрования, где:

  • Чтение зашифрованного содержимого вернёт его зашифрованный текст.

  • Запись зашифрованного содержимого завершится ошибкой.

reset_default_context() Показать исходный код
# File activerecord/lib/active_record/encryption/contexts.rb, line 70
def reset_default_context
  self.default_context = Context.new
end
with_encryption_context(properties) { || ... } Показать исходный код
# 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 контексты могут быть вложены.

without_encryption(&block) Показать исходный код
# 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.

Spec-Zone.ru

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