当前位置: 首页 > 知识库问答 >
问题:

使用laravel-echo-server从RedisBroadcaster.php获取AccessDeniedHttpExcture

颛孙嘉玉
2023-03-14

我不明白为什么我在尝试连接到私人频道时会遇到这个问题。我有这篇文章的100%相同的代码-无法使用laravel echo服务器、redis和socket对laravel专用频道进行身份验证。虽然带有redis前缀的io不起作用。。。它与简单通道一起工作。。。这是我的错误-

无法对客户端进行身份验证,已通过laravel echo服务器获取HTTP状态403

这是我的代码-

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001',
    auth: {
    headers:
        {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    }
});
window.Echo.private('user.'+userIdentifier).listen('SomeTestEvent', function (e) {
...
} 

路线/channels.php-

Broadcast::channel('user.{id}', function ($user, $id) {
    return true; // returning always true just for test
});

广播服务提供商。php-

public function boot()
    {
        Broadcast::routes();

        require base_path('routes/channels.php');
    }

事件/某些测试事件。php-

public function broadcastOn()
    {
        return new PrivateChannel('user.'.$this->data['user_id']);
    }

拉威尔回声服务器。json-

{
    "authHost": "http://localhost:8000",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
        {
            "appId": "e0ebecd04673b905",
            "key": "39c2a1314e4ef8e2879486a4a3b91c1e"
        }
    ],
    "database": "redis",
    "databaseConfig": {
        "redis": {
            "host": "localhost",
            "port": "6379"
        },
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": "",
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "*",
        "allowMethods": "GET, POST",
        "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
    }
}

共有1个答案

杨雪松
2023-03-14

哦,天哪,我刚刚知道怎么做。

我需要使用-Broadcast::routes(['middleware'=

我在前端添加了授权令牌-

 auth: {
    headers:
    {
        'Authorization': 'Bearer ' + accToken,
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
}

 类似资料:
  • Laravel Echo Server NodeJs server for Laravel Echo broadcasting with Socket.io. System Requirements The following are required to function properly. Laravel 5.3 Node 6.0+ Redis 3+ Additional informati

  • 我使用获得了和应用程序,我正在尝试通过套接字将前端连接到后端。 我已经通过方法,但它不会订阅 到目前为止,我得到的是: 页面加载后,我调用: 我通过 }); 然后我通过

  • 我正在设置一个laravel-echo-server,当我试图验证到一个私有通道时,我得到了错误:客户端无法被验证,得到了HTTP状态404。 授权公共渠道工程。 //channels.php //前端脚本验证到私有通道 //拉威尔回声服务器。json //引导。js 简单地说,我的laravel echo是通过应用程序加载的。在public/js中的js,引导程序中的所有库。js被加载进来。好的

  • NativeScript Laravel-Echo This is a laravel-echo plugin for native applications made with nativescript For more information read Laravel Broadcast. Prerequisites / Requirements Necesary api authentica

  • 我最近一直在摆弄Laravel Echo和Laravel Echo服务器,Laravel Echo的socket.io服务器实现。 网络上的内容不多,我可能遗漏了一些要点。。 我可以从laravel-echo-server的cli中看到当用户加入或离开一个通道(在我的情况下是存在通道)。我有一个Laravel事件,它执行一些我想在用户离开存在通道时触发的数据库操作。我该如何实现这一点? 谢谢

  • 无论出于何种原因,我无法从laravel echo接收客户端的任何数据。我使用的是LaravelEcho服务器(socket.io)、redis广播和redis队列。据我所知,它们都是功能性的。我将带您了解如何为测试设置它。首先,我创建了一个UserCreated事件: 然后,为了测试此事件,我创建了一个CreateUser命令: 最后,这是我的laravel echo服务器。json: 接下来,