Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔回声&x2B;拉威尔护照&x2B;科尔斯_Php_Laravel_Laravel Passport_Laravel Echo - Fatal编程技术网

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应该出现在那里