如何使用pusher和laravel的私有频道隐藏错误403(但它可以工作)?

时间:2019-08-20 09:27:36

标签: php laravel pusher laravel-echo

如何隐藏使用laravel + pusher的私人频道所禁止的错误403?

情况

我的页面上有可以接收消息的用户,而其他用户则无法接收消息-例如,可以通过channel.php条件进行检查

Broadcast::channel('post.{id}', function ($user, $id) {
  return *my expresion*;
}); 

如果返回false,那么我有错误:

  

POST http://realtime/broadcasting/auth 403 (Forbidden)

我不希望别人看到它。

我尝试制作中间件 auth:api ,但是它不起作用。而且由于这种中间件,它甚至不起作用

代码

// routes/channels.php
Broadcast::channel('post.{id}', function ($user, $id) {
    return (int) $user->id === (int) \App\Post::find($id)->user_id;
}); 

// App\Providers\BroadcastServiceProvider.php
public function boot()
{
    Broadcast::routes();

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

在events文件夹中,我具有实现ShouldBroadcast的NewComment事件,并具有broadcastWith和broadcastOn:

public function broadcastOn()
{
    return new PrivateChannel('post.' . $this->comment->post->id);
}

并且我使用 vue.js

var channel = Echo.private('post.' + this.post.id);
channel.listen('NewComment', (comment) => {
    console.log(comment);
});

我希望任何用户访问该页面都看不到该错误。但只有特定的频道可以使用。现在可以使用了,但是不能使用频道的用户被禁止了错误403

0 个答案:

没有答案