php - 使用 pusher 时如何修复 Laravel 5.7 中的“/broadcasting/auth 401 (Unauthorized)”错误
问题描述
我正在尝试在我的 SPA 中设置推送器。我已经在 Laravel 5.7 和 Vus js 中开发了该应用程序,并且正在使用 jwt 进行身份验证。
我的 Boostrap.js 看起来像这样:
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true,
auth: {
headers: {
Authorization: JWTtoken
}
}
});
JWTtoken
我登录后从 JWT 获取令牌。
我的 BroadcastServiceProvider 看起来像这样:
我在 config/app.php 中取消了它的注释
class BroadcastServiceProvider extends ServiceProvider
{
public function boot()
{
Broadcast::routes(['middleware' => 'jwt.auth']);
require base_path('routes/channels.php');
}
}
我的 Channels.php 文件如下所示:
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
我还确保整个应用程序都使用 jwt 作为其唯一的身份验证方法
配置/auth.php
我的名为 UserEvent 的事件如下所示:
class UserEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function broadcastAs()
{
return 'themechanged';
}
public function broadcastOn()
{
return new PrivateChannel('App.User.'.$this->user->id);
}
}
然后在我的 vue 组件中我做了这个:
Echo.private('App.User.1')
.notification('themechanged', (data) => {
console.log(data)
})
但在我的控制台中收到此错误:
broadcasting/auth 401 (Unauthorized)
解决方案
推荐阅读
- node.js - 对于 gulp 4.0.2 依赖漏洞我该怎么办?
- oracle - 如何确定这些字符存储在 Oracle 数据库中,以便正确配置 Putty 会话?
- go - 在什么时候例程实际上阻塞了?
- android - Android API 30 中的外部文件读写,在 JAVA 中使用 MediaStore API
- vue.js - 具有不同 URL 的 Vue 动态导入
- python - 每次我的代码运行时,如何用新名称保存字典?
- hugo - Hugo 静态站点构建器,带花括号的字符串解析
- sql - 使用条件更新 sql 查询
- javascript - 在 Javascript 中访问数组内的对象返回 TypeError:无法读取未定义错误的属性“数据”
- sql - SQL查询,无法识别'('选择