【发布时间】:2018-10-09 07:15:53
【问题描述】:
Larave middleware understanding source
上面提到了,中间件有两种类型:Before和after。处理请求前处理中间件前,处理请求后处理中间件后。
但可终止中间件的功能与中间件完全一样。那么这两者的核心区别是什么?谢谢。
【问题讨论】:
标签: laravel laravel-5.6 laravel-middleware
Larave middleware understanding source
上面提到了,中间件有两种类型:Before和after。处理请求前处理中间件前,处理请求后处理中间件后。
但可终止中间件的功能与中间件完全一样。那么这两者的核心区别是什么?谢谢。
【问题讨论】:
标签: laravel laravel-5.6 laravel-middleware
Terminable Middleware 在响应准备就绪后运行。
After Middleware 在请求之后但在响应准备好之前运行。
例如,假设您想为所有或一组响应设置响应标头,您可以使用 after 中间件来实现。因为您需要在呈现请求之后但在返回响应之前设置标头。 但是,如果您想将会话数据存储在存储中,则可以使用可终止的中间件。
这是TerminableInterface中的终止方法:
/**
* Terminates a request/response cycle.
*
* Should be called after sending the response and before shutting down the kernel.
*/
public function terminate(Request $request, Response $response);
您在Terminable中间件的terminate方法中收到请求和响应对象,但是更改响应不会生效,因为响应已经返回。
【讨论】: