Php 拉威尔回声&x2B;拉威尔护照&x2B;科尔斯
一天中的好时光,Php 拉威尔回声&x2B;拉威尔护照&x2B;科尔斯,php,laravel,laravel-passport,laravel-echo,Php,Laravel,Laravel Passport,Laravel Echo,一天中的好时光, 最近我在laravel echo服务器中遇到了一个身份验证错误 我已经成功地使用Laravel Passport+Vue.js设置了一个应用程序,并且受auth:api中间件保护的端点工作正常 然而,当我尝试使用Laravel Echo对用户进行身份验证时,我在Laravel Echo服务器的日志中得到405个异常 为了向laravel echo server的api端点添加身份验证,我将BroadcastServiceProvider.php的内容更改为 Broadcast:
最近我在laravel echo服务器中遇到了一个身份验证错误 我已经成功地使用Laravel Passport+Vue.js设置了一个应用程序,并且受
auth:api
中间件保护的端点工作正常
然而,当我尝试使用Laravel Echo对用户进行身份验证时,我在Laravel Echo服务器的日志中得到405个异常
为了向laravel echo server的api
端点添加身份验证,我将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应用程序中配置echo服务器的方式:
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错误日志中不允许使用im getting方法
为了澄清一下,我附上了日志本身:我猜广播线路没有链接
您需要在config/App.php中取消注释App\Providers\BroadcastServiceProvider::class
然后,您可以在运行php artisan route:list
时确认,api/broadcasting/auth应该出现在那里