Авторизация для паспорта 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,
            },
        },
    });

Рекомендации:

  1. https://laravel.com/docs/5.3/broadcasting
  2. https://github.com/tlaverdure/laravel-echo-server
Другие вопросы по тегам