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
-
Method Details
-
register
-
consume
原子地消費一個 jti- Parameters:
jti- 連結的 JWT ID- Returns:
- true 若 jti 原本存在且已被本次呼叫移除(首次使用);false 若不存在(已用過 / 已逾期)
-