【问题标题】:Laravel apply multiple middlewares on API routesLaravel 在 API 路由上应用多个中间件
【发布时间】:2020-01-20 20:21:39
【问题描述】:

我创建了一个自定义中间件来检查$request->wantsJson() 是否应该允许路由调用该函数。顺序是 1.检查JSON 2.检查授权

如何按此顺序实现中间件?我尝试了以下方法,但它不起作用

Route::group(['middleware'  =>  ['auth:api', 'json']], function () {
    Route::group(['prefix'  =>  'V1'], function () {
       Route::post('logout', 'API\V1\AuthController@logout');
    });
});

【问题讨论】:

  • 你试过交换数组中中间件的顺序吗?
  • 是的,它也不起作用

标签: php laravel authentication middleware


【解决方案1】:

你在App\Http\Kernel.php路由中间件中注册了中间件吗?
https://laravel.com/docs/master/middleware#assigning-middleware-to-routes

protected $routeMiddleware = [
    // ...
    'json' => \App\Http\Middleware\CheckForJson::class,
];

还有一个额外的数组用于强制非全局中间件的优先级(顺序)。
https://laravel.com/docs/master/middleware#sorting-middleware

protected $middlewarePriority = [
    // ...
    \App\Http\Middleware\CheckForJson::class,
];

【讨论】:

  • 这是否意味着json中间件会优先于其他中间件?我想运行“已验证”的中间件,然后运行我的自定义中间件。
猜你喜欢
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 2018-10-25
  • 2017-05-03
  • 1970-01-01
  • 2021-03-05
  • 2019-09-21
  • 2020-01-11
相关资源
最近更新 更多