Я очень новичок в трансляции событий в реальном времени, у меня есть простая настройка 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
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