【发布时间】:2017-09-26 17:14:41
【问题描述】:
我对实时事件广播很陌生,我有简单的 laravel-echo-server 设置并处理一切。我无法针对其他身份验证设置/定义身份验证guard 它总是使用auth.php 中定义的user/default guard 检查
我已经在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 守卫而不是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
【问题讨论】:
标签: laravel socket.io laravel-5.4 laravel-authorization laravel-echo