升级到 Rails 7:在哪里注册 cookie 旋转器?

Séb*_*ois 7 ruby cookies hash openssl ruby-on-rails

从 Rails 6 升级到 Rails 7 时,该new_framework_defaults_7_0.rb文件指示注册 cookie 旋转器,以使用 SHA1 的旧摘要类读取消息(代码如下)。该代码是否应该在一次性 rake 任务中执行一次,或者在每次应用程序启动时在初始化程序中执行?(在后一种情况下,是否应该按照此处的建议将其包含在 after_initialize 块中?)如何确定应用程序中除了 cookie 之外是否还有其他地方需要进行此类迁移?

Rails.application.config.action_dispatch.cookies_rotations.tap do |cookies|
  salt = Rails.application.config.action_dispatch.authenticated_encrypted_cookie_salt
  secret_key_base = Rails.application.secrets.secret_key_base
  key_generator = ActiveSupport::KeyGenerator.new(
    secret_key_base, iterations: 1000, hash_digest_class: OpenSSL::Digest::SHA1
  )
  key_len = ActiveSupport::MessageEncryptor.key_len
  secret = key_generator.generate_key(salt, key_len)
  cookies.rotate :encrypted, secret
end
Run Code Online (Sandbox Code Playgroud)