middlewares 和 afterMiddlewares 的区别是什么?

在app/bean.php文件下,存在middlewars和afterMiddlewares两个中间件配置,如下:

'middlewares'      => [
    \App\Http\Middleware\FavIconMiddleware::class,
    \App\Http\Middleware\TrimParamsMiddleware::class,
    \App\Http\Middleware\IdValidateMiddleware::class,
    // \Swoft\Whoops\WhoopsMiddleware::class,
    // Allow use @View tag
    \Swoft\View\Middleware\ViewMiddleware::class,
],
'afterMiddlewares' => [
    \Swoft\Http\Server\Middleware\ValidatorMiddleware::class
]

但debug发现,在执行中间件时,其实是将两者合并放到了一个$requestMiddlewares的数组中的,如下:

middleware和afterMiddleware的区别是什么?

然后,依次执行中间件的process方法。

那么middlewaresafterMiddlewares两项配置的区别在哪?还是说在其他地方有使用上的区别?

)

Inhere
最佳答案

afterMiddlewares 里的中间件总是会追加到 middlewares 的后面,也就是 after 这里面的 中间件总是在最后被执行。

4年前 评论
讨论数量: 2

file

漏了一张图,补上

4年前 评论
Inhere

afterMiddlewares 里的中间件总是会追加到 middlewares 的后面,也就是 after 这里面的 中间件总是在最后被执行。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!