我正在尝试发送一个变量来终止来自路由的中间件:
Route::group(['middleware' => 'checkUserLevel'], function () {
// my routes
});
我可以在中间件的句柄中获取checkUserLevel
,但我也需要在terminate方法中访问,我该怎么办?
public function handle($request, Closure $next, $key)
{
dd($key); // it returns variable
}
public function terminate($request, $response)
{
//I need that variable here
}
最佳答案
如 documentation 中所述,如果您想使用相同的中间件实例(因为默认情况下它使用中间件的新实例),您需要将中间件注册为单例。
您可以通过添加到您的ServiceProvider
的register
方法将其注册为单例
public function register()
{
$this->app->singleton(\App\Http\Middleware\YourMiddleware::class);
}
然后你可以像lorent's answer的第一个例子一样使用类的属性
protected $foo;
public function handle($request, Closure $next)
{
$this->foo = 'bar';
return $next($request);
}
public function terminate($request, $response)
{
// because we cannot use `dd` here, so the example is using `logger`
logger($this->foo);
}
关于laravel - 发送变量以在中间件中终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54001927/