首页 > 解决方案 > Laravel 广播私有频道可以通过 Echo::channel() 订阅

问题描述

我在 routes/channel.php 中定义了通道路由 在此处输入图像描述

当前端使用 laravel echo 订阅频道时,如果我使用 Echo.private(),那么它将调用“/broadcasting/auth” api 来获取令牌,如果我没有在 Echo 中传递 auth 头,它将显示身份验证失败。但是,如果我调用 Echo.channel() 订阅同一个私人频道,它只是在消息中直接显示“pusher_internal:subscription_succeeded”,这意味着它已成功订阅私人频道,无需使用 auth 标头进行身份验证,但是它应该显示身份验证错误。

下面的片段是我用来订阅频道的前端代码示例:

window.Echo.channel(`user.d52a41f2-40cd-4cf3-9ca1-55c244eef46b`).notification(
(notification) => {
    console.log(notification);
}

); 如果我使用 .channel() 并且它会订阅成功而无需附加 auth 标头,如果我使用 .private(),那么它将要求 auth 标头。但是其他任何人都可以使用 Echo.channel() 并订阅没有身份验证的私人频道。

我的 laravel 版本是 8.61.0,PHP 版本是 8.0.8。

标签: laravelwebsocketechoprivatebroadcast

解决方案


推荐阅读