- #
- C
- I
- O
- R
屬性
[RW] | transitional | 為 true 時,建立訊息加密時會交換前兩個輪替選項設定。例如,使用下列設定,訊息加密會使用
在對應用程式執行滾動式部署時,此功能會很有用,其中尚未更新的伺服器仍必須能夠從已更新伺服器解密訊息。在此情境下,請先使用新的輪替 (例如 |
執行個體公共方法
[](salt) 連結
傳回 MessageEncryptor
,它的組態使用從給定 salt
衍生的密碼,以及 rotate
的選項。 MessageEncryptor
執行個體會記住,因此相同的 salt
會傳回相同的執行個體。
來源: 在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 48
[]=(salt, encryptor) 連結
覆寫與給定 salt
關聯的 MessageEncryptor
執行個體。
來源: 在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 56
clear_rotations 連結
清除選項組清單。
來源: 在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 117
initialize(&secret_generator) 連結
初始化新的執行個體。 secret_generator
必須接受 salt
和 secret_length
kwarg,並傳回適當的密碼 (字串) 或密碼 (字串陣列)。 secret_generator
也可能接受其他任意 kwarg。如果 rotate
使用任何符合那些 kwarg 的選項進行呼叫,那些選項會傳遞至 secret_generator
而非訊息加密。
encryptors = ActiveSupport::MessageEncryptors.new do |salt, secret_length:, base:|
MySecretGenerator.new(base).generate(salt, secret_length)
end
encryptors.rotate(base: "...")
來源: 在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 31
on_rotation(&callback) 連結
設定在使用非第一個選項組解密訊息時呼叫的回呼。
例如,這個回呼可以在每次呼叫時記錄,從而指出是否仍使用舊選項組或可以從輪替中移除舊選項組。
來源: 在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 123
rotate(**options)
rotate(&block) 連結
在選項組清單中加入選項
。 訊息
將使用清單中的第一組進行加密。不過進行解密時,會依序嘗試每組,直到其中一組成功為止。
值得注意的是,:secret_generator
選項可以指定與最初指定的不同的金鑰產生器。金鑰產生器必須回應call
,並接受 salt 和 secret_length
kwarg,並傳回適當的金鑰(字串)或金鑰(字串陣列)。金鑰產生器也可以接受其他任意的 kwargs。
如果任何選項與操作中金鑰產生器的 kwargs 相符,這些選項將傳遞給金鑰產生器,而不是傳遞給訊息加密器。
對於只更換一次性密鑰,支援區塊形式。區塊將接收 salt,並應傳回適當選項 雜湊
。區塊也可以傳回 nil 以表示輪替不適用於指定的 salt。例如
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]
來源:GitHub
# File activesupport/lib/active_support/message_encryptors.rb, line 62