Techioz Blog

Rails 6 CSRF トークンの有効期限の問題

概要

実稼働環境でのフォーム送信で問題が発生しています。 この基準は非常にまれなようで、私は問題を再現できませんでした。

CSRF トークンは問題なく作成され、検証されます。

この問題は、ユーザーがフォームを送信する前に 2 時間以上待った場合にのみ発生するようですが、これを行っても同様に再現できませんでした。 ログ

W, [2022-07-14T15:19:37.535241 #2433]  WARN -- : Can't verify CSRF token authenticity.
I, [2022-07-14T15:19:37.535556 #2433]  INFO -- : Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms | Allocations: 291)
F, [2022-07-14T15:19:37.536425 #2433] FATAL -- :   
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

Rails バージョン 6.1.6 Ruby バージョン 2.7.4

解決策

この問題は、場合によっては、rails-ujs がリモート フォームの送信とともに CSRF トークンの挿入に失敗することが原因で発生しました。

根本原因は特定できませんでしたが、Rails 7 と Turbo にアップグレードすることで問題は解決されました。