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

Laravel 5.6多中间件路由不生效问题求助

问题分析与解决方案

你遇到的问题根源在于**Route::middleware()方法的参数使用错误**——这个方法只接受一个包含中间件的数组作为参数,而你传递了两个独立的数组。Laravel会只处理第一个数组里的中间件,直接忽略第二个参数,所以才会出现只有auth和moderator生效的情况。

而且从你的中间件逻辑来看,你应该是希望已认证的用户,只要是管理员(admin)或版主(moderator)中的任意一种,就能访问/dashboard路由。如果直接把两个中间件放到同一个数组里(['auth', 'moderator', 'admin']),会变成要求用户同时满足两个角色,这显然不是你想要的效果。

下面给你两种可行的解决方案:


方案一:创建组合中间件(推荐)

这种方式更清晰,也方便后续复用这个权限判断逻辑:

  1. 生成新的中间件:
    运行Artisan命令创建中间件:

    php artisan make:middleware CheckAdminOrModerator
    
  2. 编写中间件逻辑:
    在app/Http/Middleware/CheckAdminOrModerator.php中,修改handle方法:

    public function handle($request, Closure $next)
    {
        $user = $request->user();
        // 判断用户是admin或moderator即可通过
        if ($user && in_array($user->role, ['admin', 'moderator'])) {
            return $next($request);
        }
        // 不满足条件则重定向到首页
        return redirect('/');
    }
    
  3. 注册中间件:
    在app/Http/Kernel.php的$routeMiddleware数组中添加:

    'admin-or-moderator' => \App\Http\Middleware\CheckAdminOrModerator::class,
    
  4. 修改路由:
    现在路由可以简化成:

    Route::middleware(['auth', 'admin-or-moderator'])->group(function() {
        Route::get('/dashboard', function() {
            return view('dashboard');
        });
    });
    

方案二:调整现有中间件逻辑(无需新建文件)

如果你不想新增中间件,可以修改其中一个中间件的逻辑,让它支持判断多个角色:

比如修改Moderator中间件(或者Admin中间件,选一个即可):

public function handle($request, Closure $next)
{
    $user = $request->user();
    // 同时支持admin和moderator角色
    if ($user && in_array($user->role, ['admin', 'moderator'])) {
        return $next($request);
    }
    return redirect('/');
}

然后路由只需要使用auth加上修改后的中间件即可:

Route::middleware(['auth', 'moderator'])->group(function() {
    Route::get('/dashboard', function() {
        return view('dashboard');
    });
});

为什么原来的写法不行?

再强调一下:Route::middleware()的签名是middleware(array $middleware),它只接受一个数组参数。你之前的写法Route::middleware(['auth', 'moderator'], ['auth', 'admin'])相当于传递了两个参数,Laravel会忽略第二个参数,所以只有第一个数组里的中间件会被执行。

内容的提问来源于stack exchange,提问作者Bikash Gurung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:56:36