Javascript 推送程序未解密传入通知
我正在开发一个具有React前端的Laravel应用程序。我有通知设置使用推,这一切都很好 我正在尝试使用这里描述的端到端加密 在我的config/broadcasting.php中,我有以下内容Javascript 推送程序未解密传入通知,javascript,reactjs,laravel,encryption,pusher,Javascript,Reactjs,Laravel,Encryption,Pusher,我正在开发一个具有React前端的Laravel应用程序。我有通知设置使用推,这一切都很好 我正在尝试使用这里描述的端到端加密 在我的config/broadcasting.php中,我有以下内容 'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => en
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
'encryption_master_key' => env('PUSHER_ENCRYPTION_KEY'),
],
]
在我的.env
中设置了PUSHER\u加密\u密钥
,我可以在PUSHER调试控制台中看到通知,按照我的预期进行加密
在我的前端,我像这样实例化Pusher
const socket = new Pusher(process.env.MIX_PUSHER_APP_KEY, {
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
authEndpoint: '/api/broadcasting/auth'
});
socket.subscribe('private-encrypted-user.' + props.user.id);
socket.bind('App\\Events\\TaskCreated' , function (data) {
console.log(data)
});
我可以在我的网络选项卡/api/broadcasting/auth
中看到一个额外字段的响应,该字段现在称为shared\u secret
。根据文档,这是用来解密传入通知的,解密应该是自动的。当我触发App\\Events\\TaskCreated
控制台时,日志(数据)
运行,但数据仍然加密
它还在文档中指出,如果客户端无法解密消息,它将向您的身份验证端点发出另一个请求,以获取新的解密密钥。如果客户端仍然无法使用新密钥解密消息,它将抛出一个错误。
但是不会抛出错误,也不会向/api/broadcasting/auth
我已启用Pusher.logToConsole=true代码>一切看起来都很好。我甚至得到了“pusher\u internal:subscription\u successed”,“channel”:“private encrypted user.2”
,这让我相信事情的auth端正在按预期工作
有人能看到我遗漏了什么吗 我算出来了
在上面的代码中,当需要将事件绑定到通道时,我将事件绑定到套接字。浪费了一天,但下面的代码可以正常工作,以防其他人遇到同样的问题
const socket = new Pusher(process.env.MIX_PUSHER_APP_KEY, {
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
authEndpoint: '/api/broadcasting/auth'
});
const channel = socket.subscribe('private-encrypted-user.' + props.user.id);
channel.bind('App\\Events\\TaskCreated' , function (data) {
console.log(data)
});