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

Laravel路由组添加多中间件报错:Target class [VerifyHeaders]不存在

问题描述

在routes/web.php的路由组中添加新中间件VerifyHeaders后,访问路径报错Target class [VerifyHeaders] does not exist,相关操作及代码如下:

原有路由组代码:

Route::group(['middleware'=>['xFrameOptionsHeader','VerifyHeaders']], function(){
    Route::get('/', 'PagesController@getIndex');
    Route::get('/otherroute', 'PagesController@getOtherRoute'); // etc...
});

执行命令生成中间件:

php artisan make:middleware VerifyHeaders

生成的VerifyHeaders中间件代码:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class VerifyHeaders
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        return $next($request);
    }
}

报错信息:

Illuminate\Contracts\Container\BindingResolutionException
Target class [VerifyHeaders] does not exist.
解决方案

你遗漏了中间件注册的关键步骤,Laravel不会自动识别新生成的中间件,需按以下步骤操作:

1. 注册中间件到HTTP内核

打开app/Http/Kernel.php文件:

  • 若仅在路由组中使用(推荐当前场景),将中间件添加到$routeMiddleware数组并定义别名:
protected $routeMiddleware = [
    // ... 其他已有的中间项
    'verifyHeaders' => \App\Http\Middleware\VerifyHeaders::class,
];
  • 若要让中间件对所有请求生效,添加到$middleware全局中间件数组即可。

2. 更新路由组的中间件引用

使用刚定义的别名修改路由组代码:

Route::group(['middleware'=>['xFrameOptionsHeader','verifyHeaders']], function(){
    Route::get('/', 'PagesController@getIndex');
    Route::get('/otherroute', 'PagesController@getOtherRoute'); // etc...
});

3. 清除应用缓存

执行命令清除路由与容器缓存,避免旧缓存导致识别异常:

php artisan route:clear
php artisan cache:clear

完成以上步骤后,访问路径即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:35:08