【问题标题】:Laravel middleware detected but not executed检测到 Laravel 中间件但未执行
【发布时间】:2016-07-31 14:38:55
【问题描述】:

我有一个中间件,当在 Kernel.php 中定义为全局中间件时,它工作正常。但是,我希望它只应用于特定的路线,所以我这样做:

Route::group(['prefix' => 'myapi/', 'middleware' => 'api'], function(){

});

调用php artisan route:list表示中间件检测正确。但是,它并没有被执行(我知道这一点,因为即使故意在文件中放置错误也不会做任何事情)。

...
protected $middlewareGroups = [
    ...
    'api' => [
        'throttle:60,1',
        \App\Http\Middleware\CORSMiddleware::class,
    ],
];

当中间件设置为全局时,route:list 不会列出它。此外,故意在 routes.php 中指定错误的中间件名称不会引发任何错误。

编辑: 日志显示所有 GET 资源路由都执行了中间件,但没有为 POST/PUT/DELETE 执行中间件。

【问题讨论】:

    标签: laravel middleware laravel-middleware


    【解决方案1】:

    我相信在将中间件添加到组时必须将中间件放置在数组中 - 这将导致它触发并为您提供预期的结果:

    Route::group(['prefix' => 'myapi/', 'middleware' => ['api']], function(){
    
    });
    

    【讨论】:

    • 两种语法都允许,否则 artisan 不会在route:list 中列出中间件。但即使使用这种语法它也不起作用:(
    猜你喜欢
    • 2016-06-27
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多