Laravel如何在core/routes中为dashboard路由添加仅staff用户可访问的限制
实现方案
给dashboard路由单独加访问限制有两种常用实现方式,都不会影响同组下的其他路由:
方式一:直接追加闭包中间件(适合临时简单需求,无需新建文件)
直接修改原有路由定义即可,完整代码如下:
Route::middleware('admin')->group(function () { // 仅dashboard路由追加用户名校验中间件 Route::get('dashboard', 'AdminController@dashboard') ->name('dashboard') ->middleware(function ($request, $next) { // 校验当前登录用户用户名是否为staff,字段名可根据实际情况调整 if (auth()->user()->username !== 'staff') { // 可自定义响应,比如抛出403错误或者跳转到指定页面 abort(403, '您没有权限访问该页面'); } return $next($request); }); // 以下原有路由保持不变,不受上述规则影响 Route::get('profile', 'AdminController@profile')->name('profile'); Route::post('profile', 'AdminController@profileUpdate')->name('profile.update'); Route::get('password', 'AdminController@password')->name('password'); Route::post('password', 'AdminController@passwordUpdate')->name('password.update'); });
方式二:创建独立中间件(适合后续需要扩展权限规则的场景)
- 执行Artisan命令生成中间件文件:
php artisan make:middleware CheckStaffAccess - 打开生成的
app/Http/Middleware/CheckStaffAccess.php,修改handle方法逻辑:
public function handle($request, \Closure $next) { if (auth()->user()->username !== 'staff') { abort(403, '无权访问该页面'); } return $next($request); }
- 在
app/Http/Kernel.php的$routeMiddleware数组中注册中间件:
protected $routeMiddleware = [ // 原有其他中间件保留 'staff.access' => \App\Http\Middleware\CheckStaffAccess::class, ];
- 给dashboard路由追加注册好的中间件即可:
Route::get('dashboard', 'AdminController@dashboard') ->name('dashboard') ->middleware('staff.access');
内容的提问来源于stack exchange,提问作者John Martins
相关产品推荐
相关产品推荐

