Mercure-Hub: 订阅者的身份验证
本文件是入门指南指南的一部分。您可以在这里查看完整指南:如何开始使用 Mercure-hub。
👋 欢迎来到 Stackhero 文档!
Stackhero 提供现成的 Mercure-Hub 云 解决方案,具有众多优势,包括:
- 无限请求和消息大小。
- 使用 HTTPS 保护的可自定义域名(例如,https://real-time.your-company.com)。
- 只需点击即可轻松更新。
- 由专用私有 VM提供的最佳性能和强大安全性。
- 在🇪🇺 欧洲和🇺🇸 美国均可用。
节省时间并简化您的生活:只需5分钟即可试用 Stackhero 的 Mercure-Hub 云托管 解决方案!
在前面的示例中,订阅者未经过身份验证,您需要在 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 仪表板中取消选中“允许匿名订阅者”!