ActiveRecord::Encryption
使用加密上下文来配置用于在特定时间点进行加密/解密的不同实体。
默认情况下,库使用默认的加密上下文。这是 Context
,最初通过 config.active_record.encryption
选项进行配置。库用户可以在运行代码块时定义嵌套的加密上下文。
参见 Context
。
方法
- C
- P
- R
- W
实例公共方法
context() 链接
返回当前上下文。默认情况下,它将返回当前上下文。
来源: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/contexts.rb, line 62 def context self.current_custom_context || self.default_context end
current_custom_context() 链接
来源: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/contexts.rb, line 66 def current_custom_context self.custom_contexts&.last end
protecting_encrypted_data(&block) 链接
在加密上下文中运行提供的块,其中
-
读取加密的内容将返回其密文。
-
写入加密的内容将失败。
来源: 显示 | 在 GitHub 上
# 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() 链接
来源: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/contexts.rb, line 70 def reset_default_context self.default_context = Context.new end
with_encryption_context(properties) 链接
配置在运行提供的代码块时要使用的自定义加密上下文。
它支持覆盖 Context
中定义的所有属性。
示例
ActiveRecord::Encryption.with_encryption_context(encryptor: ActiveRecord::Encryption::NullEncryptor.new) do
...
end
Encryption
上下文可以嵌套。
来源: 显示 | 在 GitHub 上
# 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
without_encryption(&block) 链接
在加密上下文运行提供的块,其中禁用加密
-
读取加密的内容将返回其密文。
-
写入加密的内容将写入其明文。
来源: 显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/contexts.rb, line 49 def without_encryption(&block) with_encryption_context encryptor: ActiveRecord::Encryption::NullEncryptor.new, &block end