如何保护laravel-echo-server连接

时间:2019-06-04 17:53:09

标签: laravel socket.io laravel-echo

我使用来自socket.io和laravel-echo-server的事件通过公共渠道将事件发送给所有客户端,但是我只希望我的客户端(例如我的移动应用和网络应用)能够连接到laravel-echo服务器,而不是其他服务器,例如带有应用程序密钥和密码的推送器系统,我该怎么做?

更新: 最后,我必须从专用渠道使用,并且在移动客户端中一切正常,但是在Web应用程序(管理面板)上,laravel-echo-server无法连接到渠道并通过csrf-token授权。 这是我的代码: 在标题中:

<meta name="csrf-token" content="{{ csrf_token() }}">

在javascript中:

Echo.private('channel')
            .listen('event', (e) => {
                console.log(e);
            });

2 个答案:

答案 0 :(得分:0)

https://laravel.com/docs/5.8/broadcasting#authorizing-channels

  

私人频道要求您授权当前经过身份验证的用户可以实际收听该频道。这是通过使用通道名称向您的Laravel应用程序发出HTTP请求并允许您的应用程序确定用户是否可以在该通道上侦听来实现的。使用Laravel Echo时,将自动发出用于授权对私有频道的订阅的HTTP请求;但是,您确实需要定义适当的路由来响应这些请求。

有点涉及,但是相当简单。文档将引导您设置正确的路由,回声配置等。

答案 1 :(得分:0)

如果运行不带app id参数的client:add,将为您生成一个。运行此命令后,客户端ID和密钥将显示并存储在laravel-echo-server.json文件中。

在此示例中,只要应用程序ID和密钥都随HTTP请求一起提供,请求将被允许。

Request Headers

Authorization:  Bearer skti68i...

or

http://app.dev:6001/apps/APP_ID/channels?auth_key=skti68i...