Actions
調査 #6
openredmineに別ブラウザでログインしようとすると422エラー
Actions
ログ確認
[2025-02-11T20:37:19.129460 #172529] INFO -- : [67372a5b-4873-4491-a504-aa29f811beed] Parameters: {"authenticity_token"=>"T5ZunLiuHifGwcTbEi1A7f-n3X537aSK46SdXMgHLdQJ9oFrTX1cLcs78FLh7ZjCiuTmMjW5-uQ-OJ6NkdXPLQ", "username"=>"xxxxxx", "password"=>"[FILTERED]", "login"=>"ログイン"}
W, [2025-02-11T20:37:19.130043 #172529] WARN -- : [67372a5b-4873-4491-a504-aa29f811beed] Can't verify CSRF token authenticity.
[2025-02-11T20:37:19.130203 #172529] ERROR -- : [67372a5b-4873-4491-a504-aa29f811beed] ActionController::InvalidAuthenticityToken: Can't verify CSRF token authenticity.
CSRF対策で引っかかっている模様。
https://qiita.com/nishina555/items/4ffaf5cc57a384b66230
のように、422エラーの場合にも処理を継続するよう修正してみる。
とりあえずの解消法を見つけた。
以下3点実行。
コマンド:rails console
→Rails.cache.clear
mysqlに入る
→tokensテーブルの対象ユーザーデータを消す。(おそらくsessionのみでOK、feedsは放置でいい)
httpdを再起動
※このクリアされた状態でブラウザをいくつも開くと、同ユーザーで複数のセッションレコードが登録されていた。
まだ具体的な原因は分かっていないが、CSRFトークンの仕組みはrailsのデフォルトを使っている模様。
config/application.rbに以下の記載がある。
# Add forgery protection
config.action_controller.default_protect_from_forgery = true
取り合えずセッションが切れてもログインできるようにはなったので、
一旦この件は放置して開発を進めることにする。
https://k-devel-project.works/issues/6#note-2
これは試してダメだった気がする。多分。