laravel - 发送变量以在中间件中终止

标签 laravel middleware

我正在尝试发送一个变量来终止来自路由的中间件:

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 中所述,如果您想使用相同的中间件实例(因为默认情况下它使用中间件的新实例),您需要将中间件注册为单例。

您可以通过添加到您的ServiceProviderregister 方法将其注册为单例

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/

相关文章:

php - laravel中有没有有效的方法从数据库中选择记录并设置它们user_id?

Javascript 将 CSV 字符串映射到 JSON 数组

javascript - "Error: Route.get() requires a callback function but got a [object Undefined]"进行多次导出时

sockets - 什么是分布式系统中的中间件?

ruby-on-rails - 更新 Rails 中的中间件

c# - 多个中间件(REST + SOAP)

Laravel 查询生成器 - 日期现在使用碳的地方

javascript - 异步上传文件然后保存相关数据

javascript - 使用 POST 表单发送 Blob 对象

php - 如何在 Laravel 中更新生产数据库中的数据?