Interface SignedLinkStore

All Known Implementing Classes:
CacheSignedLinkStore

public interface SignedLinkStore

單次連結的 jti 儲存介面

LinkRedemption.SINGLE_USE 的連結會使用本介面: 簽發時 register jti,消費時 consume 原子地移除——移除成功代表首次使用,失敗代表 已被使用過或已逾期清除。LinkRedemption.REUSABLE 的連結純靠 JWT 簽章與 exp 驗證,經過本介面。

應用程式可實作不同的儲存機制(記憶體 / 快取 / Redis / 資料庫等)。

原子性:consume 必須是原子的「檢查並移除」。在高併發、需嚴格單次 保證或多節點佈署時,建議以資料庫實作(DELETE ... WHERE jti = ? 依回傳列數判定), 而非僅靠快取的 get-then-remove(見 CacheSignedLinkStore 的執行緒安全聲明)。

執行緒安全性:實作類別必須確保執行緒安全。

Since:
1.0
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    原子地消費一個 jti
    void
    登記一個單次連結的 jti
  • Method Details

    • register

      void register(String jti, Duration ttl)
      登記一個單次連結的 jti
      Parameters:
      jti - 連結的 JWT ID
      ttl - 連結有效期(供支援 per-entry 過期的實作使用;快取實作可改用快取整體 TTL)
    • consume

      boolean consume(String jti)
      原子地消費一個 jti
      Parameters:
      jti - 連結的 JWT ID
      Returns:
      true 若 jti 原本存在且已被本次呼叫移除(首次使用);false 若不存在(已用過 / 已逾期)