可终止中间件

广告位

有些时候中间件需要在 HTTP 响应已被发送到用户端之后才执行,例如,Laravel 内置的 「session…

有些时候中间件需要在 HTTP 响应已被发送到用户端之后才执行,例如,Laravel 内置的 「session」 中间件,保存 session 数据是在响应已被发送到用户端 之后 才执行。为了做到这一点,你需要定义中间件为「可终止的」。

use IlluminateContractsRoutingTerminableMiddleware;  class StartSession implements TerminableMiddleware {      public function handle($request, $next)     {         return $next($request);     }      public function terminate($request, $response)     {         // Store the session data...     }  }

如你所见,除了定义 handle 方法之外, TerminableMiddleware 定义一个 terminate 方法。这个方法接收请求和响应。一旦定义了 terminable 中间件,你需要将它增加到 HTTP kernel 文件的全局中间件清单列表中。

关于作者: 华为工程师芊芊

为您推荐