Доброе время суток,
В последнее время я столкнулся с ошибкой при аутентификации в laravel-echo-server.
Мне удалось настроить приложение с помощью Laravel Passport + Vue.jsи конечные точки, защищенные auth:api
middleware , работают просто отлично.
Однако, когда я пытаюсь аутентифицировать пользователя с помощью Laravel Echo, я получаю исключение 405 в журнале laravel-echo-server .
Чтобы добавить аутентификацию к конечной точке api
laravel-echo-server, я изменил содержимое BroadcastServiceProvider.php на
Broadcast::routes(['prefix' => 'api', 'middleware' => 'auth:api']);
и вот как мой файл laravel-echo-server.json выглядит как
{
"authHost": "http://192.168.225.128",
"authEndpoint": "/api/broadcasting/auth",
"clients": [
{
"appId": "APP_ID",
"key": "APP_KEY"
}
],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "3389",
"protocol": "http",
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "http://192.168.225.128",
"allowMethods": "OPTIONS, GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
И вот как эхо-сервер настраивается из Vue.js app:
import Vue from 'vue';
import Echo from 'laravel-echo';
const io = require('socket.io-client');
import store from '~/store';
window.io = io;
if (typeof io !== undefined) {
let authenticationToken = store.getters['account/token'];
let authenticated = store.getters['account/authenticated'];
let echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':3389',
auth: {
headers: {
Authorization: (authenticated) ? 'Bearer ' + authenticationToken : ''
}
}
});
window.Echo = echo;
if (! Vue.hasOwnProperty('$echo')) {
Object.defineProperty(Vue.prototype, '$echo', {
get() {
return echo;
}
});
}
if (! Vue.hasOwnProperty('$io')) {
Object.defineProperty(Vue.prototype, '$io', {
get() {
return io;
}
});
}
}
Учитывая, что laravel-echo-server выдает ошибку 405, это означает, что все данные, передаваемые в службу подписки, верны, однако дляпо какой-то причине я не могу получить метод в laravel-echo-server журнал ошибок.
Для пояснения я прилагаю сам журнал: Pastebin