// Core Admin Routes
Route::get('/core-admin', [CoreAuthController::class, 'loadLogin']);
Route::post('/core-admin', [CoreAuthController::class, 'login'])->name('login');
Route::middleware('auth')->group(function () {
Route::get('/core-admin/dashboard', [CoreAuthController::class, 'coreAdmin']);
Route::get('/core-admin/logout', [CoreAuthController::class, 'logout']); // Change logout route
});
// Master Admin Routes
Route::get('/master-admin', [MasterAuthController::class, 'loadLogin']);
Route::post('/master-admin', [MasterAuthController::class, 'login'])->name('login');
Route::middleware('auth')->group(function () {
Route::get('/master-admin/dashboard', [MasterAuthController::class, 'masterAdmin']);
Route::get('/master-admin/logout', [MasterAuthController::class, 'logout']); // Change logout route
});
// Website Admin Routes
Route::get('/website-admin', [WebsiteAuthController::class, 'loadLogin']);
Route::post('/website-admin', [WebsiteAuthController::class, 'login'])->name('login');
Route::middleware('auth')->group(function () {
Route::get('/website-admin/dashboard', [WebsiteAuthController::class, 'websiteAdmin']);
Route::get('/website-admin/logout', [WebsiteAuthController::class, 'logout']); // Change logout route
});
我有 3 种类型的管理员及其各自的登录页面,当我登录到 core-admin 时,它会跳转到 website-admin/dashboard,我的控制代码没问题,但问题出在路由文件中。如果我评论 website-admin 的路由代码,那么它会跳转到 master-admin/dashboard 。
我认为您应该提供更多详细信息,尤其是有关您的身份验证中间件的信息,我将为您提供一个有关如何在 laravel 中使用 Breeze 管理多角色的示例
首先在
/app/Http/Midlleware
中创建角色中间件
class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next ,$role): Response
{
if (auth()->user()->role_id != $role) {
abort(403); // Forbidden access
}
return $next($request);
}
}
然后注册中间件 将此代码添加到
bootstrap/app
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
$middleware->alias([
'role' => \App\Http\Middleware\RoleMiddleware::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
然后将此功能添加到您的用户模型中 根据角色指定每个用户的重定向路由
public function determineRedirectRoute()
{
return match ($this->role_id) {
//routes names
1 => 'agents_accounts.index',
2 => 'accounts.index',
};
}
最后修改你的路线文件
///specify the role id for the corresponding route group
Route::middleware(['auth' , 'role:2'])->group(function () {
Route::get('accounts', [AccountsController::class, 'index'])->name('accounts.index');
});
// another role
Route::middleware(['auth' , 'role:1'])->group(function () {
Route::get('agents/accounts', [AdminController::class, 'index'])->name('agents_accounts.index');
});