Mercure-Hub: 订阅者的身份验证

本文档属于入门指南指南的一部分。您可以在此处查看完整指南:如何开始使用 Mercure-hub

👋 欢迎查阅 Stackhero 文档!

Stackhero 提供全托管的 Mercure-Hub cloud 服务,旨在让实时数据传递变得简单可靠。您将获得:

  • 无限制的请求次数和消息大小,满足您的全部灵活性需求。
  • 带有内置 HTTPS 安全的自定义域名(例如,https://real-time.your-company.com)。
  • 便捷的一键升级,让您的 Hub 始终保持最新,无需任何繁琐操作。
  • 专属私有基础设施上实现高性能与强安全性
  • 多区域支持:🇪🇺 欧洲🇺🇸 美国,实现低延迟数据传输。

快速启动:只需 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 仪表板中取消选中“允许匿名订阅者”!