【问题标题】:channel vs channel_name - Laravel Echo and Laravel variable name for private channelchannel vs channel_name - 私人频道的 Laravel Echo 和 Laravel 变量名
【发布时间】:2021-08-28 09:12:35
【问题描述】:

我在 NuxtJs、Redis 和 Laravel 8 中使用 Laravel Echo Server 时遇到了一件奇怪的事情。

NuxJs 中的 Laravel Echo 发送如下所示的 WS 消息:

42["subscribe",{"channel":"container-details-3","auth":{"headers":{"Authorization":"Bearer ****"}}}]

我正在使用这样的 API 身份验证:

Broadcast::routes(['middleware' => ['auth:api']]);

这失败了,因为通过我在 Laravel 中的私人频道身份验证的请求中有一个 channel 变量,所以 $request->channel 但 Laravel 期待 $request->channel_name

从外观上看,我可能无法在 Laravel 中更改它,因为它只是硬编码的,所以我的选择是:

  1. 在中间件中更改它(似乎是一个讨厌的想法)
  2. 强制 Laravel 回显以更改 WS 消息的负载,因此它会显示 channel_name 而不是 channel

之前有没有人遇到过这个问题,您认为在这里最好的做法是什么?还是我完全迷路了,完全错了?

当我通过邮递员使用channel_name 变量访问身份验证端点时,所有这些都可以正常工作。

【问题讨论】:

    标签: laravel websocket redis nuxt.js laravel-echo


    【解决方案1】:

    如果你不能在 Laravel 中编辑变量名,我会感到惊讶。我从来没有使用过这个框架,但这个答案看起来不错:https://stackoverflow.com/a/47518820/8816585

    $channel->slug = str_slug($request->channel_name);
    

    但是,是的,宁愿在 Laravel 这边改变它。

    【讨论】:

    • 感谢您的回复!我明白你的意思,但恐怕这不是我想要的。我可以捕获请求并更改它。令我困扰的是截图中的代码来自 Laravel,因此 Laravel 期望 channel_name 而 Laravel Echo 库在消息中发送 channel 变量。两者不匹配,因为channel_name 在 Laravel 的代码中是硬编码的,所以在我看来我必须覆盖前端位。这真是很奇怪的情况。让我觉得我在这里做错了什么。
    • 但话又说回来,我可能在这里遗漏了一些重要的东西。我正在尝试找到一个解决方案,让我不会遇到奇怪的解决方法。
    猜你喜欢
    • 2020-01-15
    • 2019-02-08
    • 2020-11-22
    • 1970-01-01
    • 2019-06-04
    • 2019-01-19
    • 2017-05-12
    • 2020-02-13
    • 2020-07-28
    相关资源
    最近更新 更多