Laravel Echo + VueJS广播/身份验证问题

时间:2019-11-11 03:48:53

标签: php laravel vue.js pusher pusher-js

我正在使用Laravel Echo和pusher作为我的服务器。它已经在公共频道上工作了。

这是我的Laravel回声监听器image link

的照片

现在,我的问题是当我使用PrivateChannel并在私人频道中收听时,此错误弹出:

POST http://localhost:3000/broadcasting/auth 500(内部服务器错误)

在“控制台/网络”标签中的错误中,显示未定义路由[登录]。

这是控制台/网络https://i.stack.imgur.com/fnAGp.png

中的图像

我所做的事情:

  

-config / app.php中未注释的App \ Providers \ BroadcastServiceProvider :: class

     

-添加了Broadcast :: routes(['middleware'=> ['auth:api']]);在BroadcastServiceProvider.php

     

-使用Echo.private('channel-name')代替Echo.channel('channel-name')收听私人频道

     

-将authEndpoint:'http://localhost:3000/broadcasting/auth'添加到bootstrap.js(这是我的Echo选项所在的位置)

     

-在我的channels.php(here is a photo)中添加了一个频道(可能是私人频道)

     

-在我的主刀片服务器中添加了csrf令牌元标记

在推送服务器中,它在触发时会接收事件,这是一个 picture of the event successfully fired.

问题是当我收听私人频道时会弹出错误,但是在收听公共频道时一切正常,而且我不确定如何评估此问题。

1 个答案:

答案 0 :(得分:2)

您必须将auth标头与如下的pusher请求一起传递。

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'APP_KEY',
    authEndpoint: '/broadcasting/auth'
    auth: {
        headers: {
            'Authorization': 'Bearer your_api_Toke',
            'X-CSRF-Token': "CSRF_TOKEN"
         }
      }
    });

有关更多详细信息:

https://github.com/laravel/echo/issues/26
Laravel Echo not using Auth Headers