You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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');
});

方式二:创建独立中间件(适合后续需要扩展权限规则的场景)

  1. 执行Artisan命令生成中间件文件:
    php artisan make:middleware CheckStaffAccess
  2. 打开生成的app/Http/Middleware/CheckStaffAccess.php,修改handle方法逻辑:
public function handle($request, \Closure $next)
{
    if (auth()->user()->username !== 'staff') {
        abort(403, '无权访问该页面');
    }
    return $next($request);
}
  1. 在app/Http/Kernel.php的$routeMiddleware数组中注册中间件:
protected $routeMiddleware = [
    // 原有其他中间件保留
    'staff.access' => \App\Http\Middleware\CheckStaffAccess::class,
];
  1. 给dashboard路由追加注册好的中间件即可:
Route::get('dashboard', 'AdminController@dashboard')
    ->name('dashboard')
    ->middleware('staff.access');

内容的提问来源于stack exchange,提问作者John Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:45:03