Laravel 5.4 標準の Multi-Auth 機能を利用して、2系統のログイン処理を実装しました。
両方をログイン、ログアウトを繰り返しているとまれに正しいパスワードでログインボタンを押すと別のguardのログイン画面に飛ばされてしまうことがあります。
この時ログイン自体は成功しているので、URL手入力で本来のログイン後のアドレスに移動すると正しくログインできていることが確認できます。
LoginController にはそれぞれ適切な $redirectTo プロパティを設定してあります。メソッド guard() もオーバーライド済みです。
以下が再現手順です。
- ガード users のログイン画面とガード admins のログイン画面を別のタブで開いておく
- ガード users でログインする
- ログアウトする
- ガード admins のタブでログインをしようとすると Token Mismatch エラー
- 一旦ブラウザバックして admins のログイン画面を再読込した上で再度ログインする
- users のログイン画面に飛ばされる(adminsとしてはログインできている)
ログイン失敗時の遷移先については app/Exceptions/Handler.php の unauthenticated() を改造しています。
php
1 $guard = array_get($exception->guards(), 0); 2 3 if($guard == 'admins') { 4 $route = 'admin.login'; 5 } else { 6 $route = 'login'; 7 } 8 return redirect()->guest(route($route));
何か解決する方法や原因を絞り込む手がかりなどはないでしょうか?
よろしくお願いいたします。