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

Laravel 11中withoutMiddleware()方法失效问题求助

解决Laravel全局中间件无法通过withoutMiddleware绕过的问题

你遇到的问题根源在于:Route::withoutMiddleware() 只能移除直接分配给路由/路由组的中间件,对全局注册的中间件无效。你在app.php里通过$middleware->use()注册的是全局中间件,这类中间件会强制应用到所有路由,不管路由定义里的withoutMiddleware设置。

关于这一点,Laravel官方相关讨论里明确说明:

需要明确的是,withoutMiddleware 方法仅适用于分配给路由/路由组的中间件,不适用于全局中间件。全局中间件会应用到所有路由,不管路由定义里怎么设置。如果需要排除某些路由的全局中间件,应该在中间件本身里添加逻辑判断。

方案一:在AuthMiddleware内部添加路由排除逻辑

直接在中间件的处理逻辑里判断当前路由是否需要跳过,是最直接的解决方式:

// AuthMiddleware.php
public function handle(Request $request, Closure $next)
{
    // 检查当前路由是否是需要跳过的目标路由(推荐用路由名称,避免路径变更失效)
    if ($request->route()->named('api.auth.check')) {
        return $next($request);
    }

    // 你的原有身份验证逻辑
    // ...

    return $next($request);
}

先给目标路由命名:

// api.php
Route::get('/auth/check', [AuthController::class, 'checkUserAuthentication'])->name('api.auth.check');

如果不想用路由名称,也可以直接匹配请求路径:

if ($request->is('api/auth/check')) {
    return $next($request);
}

方案二:改用路由组中间件替代全局注册

如果不想修改中间件逻辑,可以把全局注册的中间件改成路由组专用,这样withoutMiddleware就能正常工作:

  1. 修改app.php的中间件配置,移除全局注册,给api路由组绑定中间件:
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__ . '/../routes/web.php',
        api: __DIR__ . '/../routes/api.php',
        commands: __DIR__ . '/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->alias([
            'sso' => AuthMiddleware::class,
        ]);
        // 移除全局的$middleware->use([AuthMiddleware::class])
        // 改为给api路由组添加中间件
        $middleware->group('api', [
            AuthMiddleware::class,
        ]);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();
  1. 此时api.php里的withoutMiddleware就能正确排除指定路由的中间件:
Route::withoutMiddleware([AuthMiddleware::class])->group(function () {
    Route::get('/auth/check', [AuthController::class, 'checkUserAuthentication']);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:02:04