我有一个单独的数据库来保存日志(log) 我有中间件,可以保存每个带有响应的请求

 public function handle($request, Closure $next, $logType)
    {
        $response = $next($request);
        CreateLog::dispatch($request, $response, $logType)->onQueue(config('queue.queues.logging'));
        return $response;
    }

在每项工作完成后,与身份验证进度相关的所有工作都会正常工作.信标u已使用$Response=$Next($Request);

'user_id' => auth()->id(),

try 以这种方式保存用户ID.一切都运行得很好 但在Prod服务器中,user_id为空

在使用docker运行的Prod Server项目中

推荐答案

你需要仔细判断多件事:

  • 您使用的是什么会话驱动程序?
  • 您使用的队列驱动程序是什么?
  • 您的中间件是在会话和身份验证中间件运行之后运行的(基于kernal.php中的配置)

根据您的问题,并且问题只发生在生产环境中,所以您的问题可能是通信问题,如果您将会话数据分离到不同的模块和连接以提高性能,则队列处理程序通常无法访问会话数据,因此要实现这一点,您需要将所需信息从一个模块传递到另一个模块,因此在您的情况下

public function handle($request, Closure $next, $logType)
    {
        $response = $next($request);
        $userID = auth()->id();
        CreateLog::dispatch($request, $response, $logType, $userID)->onQueue(config('queue.queues.logging'));
        return $response;
    }

在您的CreateLog中存储此用户ID并使用它,而不是依赖于auth

Php相关问答推荐

Mysqli_stmt::Execute():结果字段元数据中存在过早的EOF

在Laravel Eloquent中实现一对多关系

如何在php中生成包含第100秒的时间序列?

Symfony框架锁定和.env设置

有没有办法像引用枚举一样引用注册表中的对象?

根据支付网关选项更改 WooCommerce Checkout 上的立即付款按钮文本

在 WordPress 中将自定义帖子类型永久链接设置为 root

当我激活插件时出现错误注意:未定义的偏移量:1

添加或删除优惠券后自动刷新 WooCommerce checkout 表单字段

根据WooCommerce中的产品重量更改简单产品的输入数量步值

Composer自动加载器重复了子类的类文件路径

在WooCommerce购物车和 checkout 页面中更改总计文本

如何在自定义消息中包含 WooCommerce 选定的产品变体详细信息

php var_dump(1) 返回字符串(4)

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

如何在 WooCommerce 中显示每个自定义选项卡的内容

自定义错误页面不适用于 Apache 和 nginx 设置的 .htaccess

使用循环和引用而不是递归创建分层/父子数组

在 DomPDF 和 Laravel 中使用内联 css

如何使用 php 删除 google drive 共享驱动器文件夹中的文件?