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)。然後通過瀏覽器 cookies 或 authorization 標頭發送 JWS。

由於 Server-Sent Events API 不支持自定義標頭定義,因此必須使用 cookies。然而,使用 cookies 意味著您的 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 儀表板中取消勾選 "允許匿名訂閱者"!