首页 > 解决方案 > Laravel echo,推送器未在私人频道上进行身份验证

问题描述

我正在尝试在 laravel 6 上设置一个带有 echo 的私人推送通道。它不会授权用户。我能做的最好的就是从推送者那里得到以下回应

Pusher : No callbacks on private-App.User.1 for pusher:subscription_error

我遵循了文档,我已经注册:

App\Providers\BroadcastServiceProvider

添加了 csrf 令牌:

<meta name="csrf-token" content="{{ csrf_token() }}">

调整了broadcastServiceProvider中的广播路由

Broadcast::routes(["middleware" => ["auth:api"]]);

需要通道文件

require base_path('routes/channels.php');

这是频道代码,(日志甚至没有运行)

Broadcast::channel('App.User.{id}', function ($user, $id) {

   Log::info('User failed to auth.');
   return (int) $user->id === (int) $id;
});

这是 bootstrap.js 代码,显然使用了我的真实密钥和端点(尝试使用和不使用端点)

从“laravel-echo”导入 Echo

window.Pusher = require('pusher-js');

window.Echo = new Echo({
  broadcaster: 'pusher',
  key: 'mykeyhere111',
  cluster: 'eu',
  authEndpoint: "https://mydomain.test/broadcasting/auth",
  forceTLS: true
});

Pusher.logToConsole = true;

console.log(window.Echo.options);

和我的 Vue 监听方法:

Echo.private(`App.User.${userId}`)

      .notification( (notification) => {

            console.log(notification)
 })

我也设置了env文件

BROADCAST_DRIVER=pusher

PUSHER_APP_ID=akeyhere1
PUSHER_APP_KEY=akeyhere123
PUSHER_APP_SECRET=akeyhere12345
PUSHER_APP_CLUSTER=eu

我正在使用 ssl 在宅基地上工作,也尝试过 vagrant。auth 的网络响应是:

Request URL: https://mysite.test/broadcasting/auth
Request Method: POST
Status Code: 302 

没有响应数据。

我花了几天的时间试图让这个工作,似乎没有做。有任何想法吗?

标签: laravelpusherlaravel-echo

解决方案


推荐阅读