Laravel 8 Terminable 中间件
2021-07-13 15:44 更新
有时可能需要在 HTTP 响应之后做一些工作。 如果你在中间件上定义了一个 terminate 方法,并且你使用的是 FastCGI,那么 terminate 方法会在响应发送到浏览器之后自动调用:
<?php
namespace Illuminate\Session\Middleware;
use Closure;
class StartSession
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
// 存储 session 数据
}
}
terminate 方法应该同时接收请求和响应。定义了这个中间件之后,别忘了将它添加到路由列表或者 app/Http/Kernel.php 文件的全局中间件中。
当你在中间件上调用 terminate 方法的时候,Laravel 将从 服务容器 中解析出一个新的中间件实例。如果在调用 handle 和 terminate 方法的同时使用相同的中间件实例, 请使用容器的 singleton 方法注册中间件, 通常这应该在 AppServiceProvider.php 文件中的 register 方法中完成:
use App\Http\Middleware\TerminableMiddleware;
/**
* 注册任意应用服务
*
* @return void
*/
public function register()
{
$this->app->singleton(TerminableMiddleware::class);
}
以上内容是否对您有帮助:

免费 AI IDE


更多建议: