Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 推送程序未解密传入通知_Javascript_Reactjs_Laravel_Encryption_Pusher - Fatal编程技术网

Javascript 推送程序未解密传入通知

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

我正在开发一个具有React前端的Laravel应用程序。我有通知设置使用推,这一切都很好

我正在尝试使用这里描述的端到端加密

在我的config/broadcasting.php中,我有以下内容

'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)
});