ActiveSupport::MessageVerifierの実装を読む
MessageVerifierは、RailsのActiveSupportライブラリに含まれるクラスで、データの署名と検証を行うために使用されます。これにより、データが改ざんされていないことを保証できます。以下に、ActiveSupport::MessageVerifierの実装を簡単に説明します。 1 2 3 4 5 6 7 8 verifier = Rails.application.message_verifier(:hoge) token = verifier.generate('aiueo', expires_in: 1.hour) => "eyJfcmF...--bead..." verifier.verify(token) => "aiueo" verifier.verify('kakikukeko') => mismatched digest (ActiveSupport::MessageVerifier::InvalidSignature) これがどういう仕組みなのか、実装を追いかけてみます。 なおrails8.1.2時点のコードを参照しています。 コードリーディング Rails.application.message_verifier Rails.application.message_verifier(:hoge)からたどります。 1 2 3 4 5 6 7 8 9 10 def message_verifier(verifier_name) message_verifiers[verifier_name] # :hogeを渡す end def message_verifiers @message_verifiers ||= ActiveSupport::MessageVerifiers.new do |salt, secret_key_base: self.secret_key_base| key_generator(secret_key_base).generate_key(salt) end.rotate_defaults end https://github.com/rails/rails/blob/v8.1.2/railties/lib/rails/application.rb#L238-L240 https://github.com/rails/rails/blob/v8.1.2/railties/lib/rails/application.rb#L210-L215 ...