🛤️

Rails7 で ActiveSupport::KeyGenerator の HashDigestClass 変更後の rotate

2022/01/31に公開

Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256
にした後、旧 key generator で生成された MessageVerifier の verify をサポートする。

Rails.application.config.after_initialize do
  %i(hoge fugo).each do |key|
    old_secret = ActiveSupport::KeyGenerator.new(Rails.application.secrets.secret_key_base, iterations: 1000, hash_digest_class: OpenSSL::Digest::SHA1).generate_key(key.to_s)
    Rails.application.message_verifier(key).rotate old_secret
  end
end

Discussion