- #
- 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) 連結
設定一個在使用非第一個選項集解密訊息時呼叫的 callback。
例如,此 callback 可以記錄每次呼叫的時間,並因此指出舊的選項集是否仍在使用中,或可以從輪替中移除。
來源:GitHub
# File activesupport/lib/active_support/message_encryptors.rb, line 123
rotate(**options)
rotate(&block) 連結
將 options
新增至選項集清單。Messages
將使用清單中的第一個集合進行加密。然而,在解密時,每個集合將依序嘗試,直到其中一個成功為止。
值得注意的是,:secret_generator
選項可以指定與最初指定的不同的機密產生器。機密產生器必須回應 call
,接受 salt 和 secret_length
kwarg,並傳回適當的機密(字串)或機密(字串陣列)。機密產生器也可能接受其他任意 kwarg。
如果任何選項與運作中的機密產生器的 kwarg 相符,這些選項將傳遞給機密產生器,而不是傳遞給訊息加密器。
對於細緻的每個 salt 輪替,支援區塊形式。區塊將接收 salt,並應傳回適當的選項 Hash
。區塊也可以傳回 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
rotate_defaults 連結
使用預設選項呼叫 rotate
。
來源:在 GitHub 上
# File activesupport/lib/active_support/message_encryptors.rb, line 111