Class CacheSignedLinkStore
java.lang.Object
io.leandev.appfuse.security.link.store.CacheSignedLinkStore
- All Implemented Interfaces:
SignedLinkStore
快取儲存實作
使用 AppFuse Cache 儲存單次連結的 jti。jti 自然過期後由快取自動清除。
快取 TTL 須涵蓋 SINGLE_USE 連結壽命:本實作不設定 per-entry TTL
(框架 Cache API 無此能力),改依快取整體 TTL 清除。因此注入的快取 TTL 必須
不小於最長的 SINGLE_USE 連結有效期,否則 jti 會在 token 仍有效時就被逐出,
導致合法連結被誤判為「已使用」。register 的 ttl 參數在本實作中僅供參考。
執行緒安全性 / 原子性:consume 以 get-then-remove 實作,依賴底層
Cache 的執行緒安全性,屬 best-effort——極高併發下理論上存在「同一 jti 被兩個請求
同時判定為存在」的極小重入窗(與 CacheTokenBlacklistStore 同等級)。需嚴格單次保證
或多節點佈署者,請改用真正原子的資料庫實作(見 SignedLinkStore)。
- Since:
- 1.0
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
CacheSignedLinkStore
-
-
Method Details
-
register
Description copied from interface:SignedLinkStore登記一個單次連結的 jti- Specified by:
registerin interfaceSignedLinkStore- Parameters:
jti- 連結的 JWT IDttl- 連結有效期(供支援 per-entry 過期的實作使用;快取實作可改用快取整體 TTL)
-
consume
Description copied from interface:SignedLinkStore原子地消費一個 jti- Specified by:
consumein interfaceSignedLinkStore- Parameters:
jti- 連結的 JWT ID- Returns:
- true 若 jti 原本存在且已被本次呼叫移除(首次使用);false 若不存在(已用過 / 已逾期)
-