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 仪表板中取消选中“允许匿名订阅者”!