7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel ログイン時に419画面へ遷移してしまう

Last updated at Posted at 2024-02-27

現象

LaravelにBreezeで追加したログイン機能
ログインボタン押下時に419画面へ遷移してしまう。

環境

Laravel 10.41.0
Breeze 1.28.1

原因

1度目のログインボタンクリックにより、CSRFトークンが送信される。
2度目のログインボタンクリックにより、先ほどと同じCSRFトークンが送信される。
このCSRFトークンは使用済みのため、不正なトークンと判定されて419画面へ遷移してしまう。

今回自分が遭遇したケースは、breezeで自動生成したログイン機能が、ボタン連打を考慮していない作りだったのが原因と考えています。

解決した方法

以下のJSを追記
formのsubmitをトリガーに、ログインボタンをdisabledにするように修正

    document.getElementById('login-form').addEventListener('submit', function() {
        document.getElementById('login-button').setAttribute('disabled', 'disabled');
    });

注意

Laraveで419画面へ遷移してしまう現象の中で、今回のケースは多分稀なタイプです。
以下の記事によく遭遇しそうな内容が記述されているので、今回のケースと一致しなかった方はそちらを参考にしてみてください。
【 Laravel】419セッションエラーの原因と対策をすべて網羅。token miss match. 419 Sorry, your session your page has expired

参考にしたURL

Laravel】@csrfディレクティブがあるのに419エラーが発生する【Android Chrome】
419 Login Link Expired Errors - On mobile only?

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?