- #
- C
- I
- O
- R
属性
[RW] | transitional | 如果为真,则在构建消息验证器时,前两个轮换选项集将被交换。例如,使用以下配置,消息验证器将使用
这在执行应用程序的滚动部署时很有用,在滚动部署中,尚未更新的服务器仍然必须能够验证来自已更新服务器的消息。在这种情况下,首先使用新的轮换(例如 |
实例公共方法
[](salt) 链接
返回一个 MessageVerifier
,该验证器使用从给定 salt
派生的密钥配置,以及来自 rotate
的选项。 MessageVerifier
实例将被记忆,因此相同的 salt
将返回相同的实例。
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 47
[]=(salt, verifier) 链接
覆盖与给定salt
关联的MessageVerifier
实例。
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 55
clear_rotations 链接
清除选项集列表。
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 113
initialize(&secret_generator) 链接
初始化一个新实例。secret_generator
必须接受一个salt,并返回一个合适的密钥(字符串)。secret_generator
也可以接受任意关键字参数。如果rotate
被调用,并且任何选项与这些关键字参数匹配,那么这些选项将被传递给secret_generator
,而不是传递给消息验证器。
verifiers = ActiveSupport::MessageVerifiers.new do |salt, base:|
MySecretGenerator.new(base).generate(salt)
end
verifiers.rotate(base: "...")
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 31
on_rotation(&callback) 链接
设置一个回调,当使用除第一个选项集之外的选项集验证消息时调用。
例如,此回调可以记录每次调用,从而指示旧的选项集是否仍在使用,或者是否可以从轮换中删除。
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 119
rotate(**options) 链接
将options
添加到选项集列表中。Messages
将使用列表中的第一个集合进行签名。但是,在验证时,将按顺序尝试每个集合,直到一个集合成功。
值得注意的是,:secret_generator
选项可以指定与最初指定的不同的密钥生成器。密钥生成器必须响应call
,接受一个salt,并返回一个合适的密钥(字符串)。密钥生成器也可以接受任意关键字参数。
如果任何选项与活动密钥生成器的关键字参数匹配,那么这些选项将被传递给密钥生成器,而不是传递给消息验证器。
为了实现细粒度的每个salt轮换,支持块形式。块将接收salt,并应返回一个适当的选项Hash
。块也可以返回nil
来指示轮换不适用于给定的salt。例如
verifiers = ActiveSupport::MessageVerifiers.new { ... }
verifiers.rotate do |salt|
case salt
when :foo
{ serializer: JSON, url_safe: true }
when :bar
{ serializer: Marshal, url_safe: true }
end
end
verifiers.rotate(serializer: Marshal, url_safe: false)
# Uses `serializer: JSON, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
verifiers[:foo]
# Uses `serializer: Marshal, url_safe: true`.
# Falls back to `serializer: Marshal, url_safe: false`.
verifiers[:bar]
# Uses `serializer: Marshal, url_safe: false`.
verifiers[:baz]
来源:在 GitHub 上
# File activesupport/lib/active_support/message_verifiers.rb, line 61