使用Pusher时如何解决Laravel 5.7中的“ / broadcasting / auth 401(未经授权)”错误

时间:2019-04-30 11:47:29

标签: php laravel vuejs2 jwt pusher

我正在尝试在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作为其唯一的身份验证方法使用

  

config / 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)

0 个答案:

没有答案