Я установил socket.io с laravel -echo, чтобы присоединиться и прослушать laravel каналы вещания. Каналы Publi c работают нормально, так как не требуют авторизации. Частные каналы не работают должным образом, я могу присоединиться к любому частному каналу с клиентом socket.io без передачи токена авторизации .
Клиент Socket.io
window.Echo = new Echo({
host: "http://127.0.0.1:6001",
auth:{
headers: {
Accept: 'application/json',
Authorization: 'Bearer ',
},
},
broadcaster: 'socket.io',
});
window.Echo.private('user'+"."+userid)
.listen('Notification', (e) => {
console.log(e);
})
Laravel Конфигурация эхо-сервера
{
"authHost": "http://127.0.0.1:8000",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "localhost"
},
"sqlite": {}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "localhost",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
Маршруты каналов
Broadcast::channel('user.{userId}', function ($user, $userId) {
return (int) $user->id === (int) $userId;
});
BroadcastServiceProvider
Broadcast::routes(['middleware' => ['auth:api']]);
Конфигурация аутентификации
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
],
127.0.0.1: 8000 / broadcasting / auth Ответ при доступе без токена
{"message":"Unauthenticated."}
Laravel -Echo-Server
[4:50:17 PM] - Preparing authentication request to: http://127.0.0.1:8000
[4:50:17 PM] - Sending auth request to: http://127.0.0.1:8000/broadcasting/auth
[4:50:17 PM] - LtnbMInYDGa_QMMcAAAA authenticated for: private-user.1
[4:50:17 PM] - LtnbMInYDGa_QMMcAAAA joined channel: private-user.1
Итак, я предполагаю, что laravel -echo-server не возвращает false при ответе «Без аутентификации»
Любая помощь будет принята с благодарностью