Авторизация для паспорта laravel через websocket
У меня есть частный канал. И я могу использовать его, только если я прошел аутентификацию на сайте. Но в случае паспорта Laravel я понятия не имею, как это должно работать. По умолчанию все, что мне нужно, содержится в куки. Что я имею:
Broadcast::routes();
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::routes(['middleware' => ['api']]);
не имеют никакого эффекта.
Как аутентифицировать пользователей по паспорту laravel, так как это будет связано с веб-сокетом частного канала?
2 ответа
К сожалению, в настоящий момент эхо не поддерживает авторизацию с помощью паспорта laravel, необходимо написать собственный сервер sokket.io.
Я прошел через это, и моим решением было использование Laravel Echo & Laravel Echo Server для SocketIo.
Извлеките токен доступа пользователя, затем сохраните его в файле cookie или в хранилище приложения и вставьте его во время создания или повторного создания Laravel Echo, как показано ниже:
let Echo = require('laravel-echo')
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
auth: {
headers: {
Authorization: 'Bearer ' + AUTH_API_TOKEN,
},
},
});
Рекомендации: