laravel - 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。
解决方案
推荐阅读
- css - 试图将视频屏蔽为 SVG 形状
- java - 通过它们的类型将一个数组拆分为两个数组
- linux-kernel - perf 如何使用 offcore 事件?
- javascript - JavaScript - 在特定表达式之后仅获取字符串的一部分
- python - 从图像中提取人物或使背景透明
- android - 工具链“ndk-gcc”(GNU GCC):XCode arm-linux-androideabi-gcc 是 Clang 的包装器
- azure - 从 PowerShell 将哈希表作为参数传递给 ARM 模板
- python - 获取系统上所有可能的 python 模块的列表
- c# - 如何操纵 wav 文件的增益?
- linux - 在linux中解析带分隔符的文件后,我可以对字段进行子串吗