Mercure-Hub: 订阅者的身份验证
本文件是入门指南指南的一部分。您可以在这里查看完整指南:如何开始使用 Mercure-hub。
👋 欢迎来到 Stackhero 文档!
Stackhero 提供全托管的 Mercure-Hub cloud 服务,旨在让实时数据传递变得简单可靠。您将获得:
- 无限制的请求和消息大小,带来完全的灵活性。
- 带有内置 HTTPS 安全的自定义域名(例如,https://real-time.your-company.com)。
- 便捷的一键更新,让您的 hub 始终保持最新,无需额外操作。
- 在专属私有基础设施上实现高性能与强安全性。
- 多区域支持:🇪🇺 欧洲和🇺🇸 USA,实现低延迟传输。
快速启动:只需 5 分钟即可部署您的 Mercure-Hub cloud hosting 环境,立即为您的应用推送实时更新。
在前面的示例中,订阅者未经过身份验证,您需要在 Stackhero 仪表板上允许“匿名订阅者”。
要对订阅者进行身份验证,您需要使用 Stackhero 仪表板中定义的“Subscriber JWT key”生成一个 JWS(JSON Web Signature)。然后通过浏览器 cookie 或 authorization 头发送 JWS。
由于 Server-Sent Events API 不支持自定义头定义,因此必须使用 cookie。然而,使用 cookie 意味着您的 Mercure-hub 服务器和客户端需要共享相同的域(或子域)。
如果您希望跨不同域使用 SSE,请考虑使用允许头定义的 EventSource polyfill。可以在 https://github.com/Yaffle/EventSource 找到一个选项。
首先,在您的服务器端为您的客户端生成一个 JWS。一个示例可在 backend/subscriberJwsGenerator.js 中找到。只需输入您的订阅者 JWT 并使用 node subscriberJwsGenerator.js 运行脚本。
然后,在前端的 frontend/subscriberWithAuthorization.html 文件中,填写您的 endpoint 和生成的 JWS。在浏览器中打开文件,Mercure-hub 现在将与身份验证一起工作!
别忘了在 Stackhero 仪表板中取消选中“允许匿名订阅者”!