Laravel 10中如何在web.php将未授权用户重定向至登录页?
Laravel 10 实现未授权用户重定向至登录页方案
针对你的自定义后台路由,需要结合登录验证中间件和角色权限中间件来实现需求,具体步骤如下:
1. 更新路由配置
在后台路由组中同时添加auth(验证用户是否登录)和role:admin(验证用户角色)中间件,确保未登录用户先被拦截:
Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function() { Route::get('/', [App\Http\Controllers\Admin\HomeController::class, 'index'])->name('admin'); Route::resource('games', App\Http\Controllers\Admin\PostController::class); });
2. 完善/创建角色验证中间件
如果还未创建role中间件,先通过Artisan命令生成:
php artisan make:middleware RoleMiddleware
打开生成的app/Http/Middleware/RoleMiddleware.php,编写权限验证逻辑,当用户无admin角色时重定向至登录页:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class RoleMiddleware { public function handle(Request $request, Closure $next, string $role) { // 这里假设你的用户模型通过`role`字段存储角色,可根据实际关联/字段调整 if (!auth()->user() || auth()->user()->role !== $role) { return redirect()->route('login'); } return $next($request); } }
3. 注册中间件
在app/Http/Kernel.php的routeMiddleware数组中注册刚创建的中间件:
protected $routeMiddleware = [ // 保留原有中间项... 'role' => \App\Http\Middleware\RoleMiddleware::class, ];
这样配置后,无论是未登录用户,还是已登录但无admin角色的用户,访问后台路由时都会被自动重定向到登录页面。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

