我对实时事件广播非常陌生,我有简单的 laravel-echo-server 设置并处理一切。我无法设置/定义针对其他身份验证的身份验证guard
,它总是在检查中user/default
guard
定义的auth.php
我已经为每个保护私有通道设置了身份验证路由,routes/channel.php
如下面的文档。
对于 auth guard 用户私人频道
Broadcast::channel('users.{id}', function ($user, $id) {
Log::info(class_basename($user));
return (int) $user->id === (int) $id;
});
对于 auth guard admin 私人频道
Broadcast::channel('admins.{id}', function ($admin, $id) {
Log::info(class_basename($admin));
return (int) $admin->id === (int) $id;
});
它适用于第一种情况的警卫user
,但从未适用于第二种情况,即admin
警卫。和
Log::info(class_basename($admin))
总是返回User
类。
那么,我们如何传递或定义它应该使用admin
guard 而不是user
. 在探索了内部之后,Illuminate\Broadcasting\Broadcasters\Broadcaster
我发现下面是一行411
public function user($guard = null)
{
return call_user_func($this->getUserResolver(), $guard);
}
所以,如果我们可以传递这个保护参数,它就可以解决这个目的。如果有人可以给我任何东西或授权方式来设置多重警卫,那将非常有帮助。使用Laravel 5.4, laravel-echo-server, Redis, Socket.IO