Laravel11 + React + Inertiaのマルチログイン認証で、リダイレクトが適切にできない。
解決したいこと
https://reffect.co.jp/laravel/laravel9-laravel-breeze
上記サイトを参考にLaravel11+reactでマルチログイン認証機能を開発しています。
既存のUserモデル(一般ユーザアカウント)をコピーして作成した、Adminモデル(管理者権限アカウント)でGuard認証を行うようにしています。
現在は管理者権限アカウントでログインできるところまで実装ができました。
Userモデル(一般ユーザアカウント)がログインした場合、「http://127.0.0.1:8000/dashboard」へ遷移し、
Adminモデル(管理者権限アカウント)がログインした場合は「http://127.0.0.1:8000/admin/dashboard」に遷移するようにしています。
問題は、Adminモデル(管理者権限アカウント)がログイン済みの状態で「http://127.0.0.1:8000/admin/login」をURLに入力すると、「http://127.0.0.1:8000/admin/dashboard」へ遷移せず、「http://127.0.0.1:8000/login」へ遷移します。
(上記参考サイトの「ログイン後のリダイレクト」の問題で止まっています。)
上記参考サイトでは「RedirectIfAuthenticated.php」にてGuardによるリダイレクトを行っているのですが、
Laravel11から「RedirectIfAuthenticated.php」が無くなりました。
自分で試したこと
「bootstrap/app.php」の「withMiddleware」メソッド配下に「redirectGuestsTo」を追加したのですが、上記事象は解決しませんでした。
「redirectGuestsToメソッド」の中の$request
を確認したところ、この時点で「http://127.0.0.1:8000/dashboard」になっていました。
どなたかヒントだけでもいただけますと幸いです。よろしくお願いいたします。
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
\App\Http\Middleware\HandleInertiaRequests::class,
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
]);
// ここを追加
$middleware->redirectGuestsTo(function ($request) {
return $request->is('admin*') ? route('admin.login') : route('login');
});
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();