Interface CodeCache

All Known Implementing Classes:
MemoryCodeCache

public interface CodeCache
验证码缓存接口

用于存储和获取验证码,支持不同的缓存实现

主要用于验证码生成后存储,以便后续验证时获取

实现此接口的类可以使用不同的存储方式,如内存、Redis、数据库等

Author:
Kerbores(kerbores@riemann.tech)
  • Method Summary

    Modifier and Type
    Method
    Description
    default boolean
    consume(String key, String value)
    校验并消费验证码(防重放)
    get(String key)
    获取验证码
    default void
    删除验证码
    void
    set(String key, String value)
    存储验证码
  • Method Details

    • set

      void set(String key, String value)
      存储验证码

      将验证码与指定的键值关联并存储

      Parameters:
      key - 验证码的键值,用于后续获取验证码
      value - 验证码的值
    • get

      String get(String key)
      获取验证码

      根据键值获取存储的验证码

      Parameters:
      key - 验证码的键值
      Returns:
      存储的验证码值,如果不存在返回null
    • remove

      default void remove(String key)
      删除验证码

      根据键值删除存储的验证码(H6 新增原语,供 consume(String, String) 默认实现与缓存清理使用)

      默认空实现用于兼容只实现了 set/get 的旧实现;需要真正删除语义的实现(如 MemoryCodeCache、Redis)应覆写

      Parameters:
      key - 验证码的键值
    • consume

      default boolean consume(String key, String value)
      校验并消费验证码(防重放)

      校验缓存中的值与传入值是否一致,一致则删除并返回 true,否则返回 false—— 验证码校验一次后即失效,无法重复使用(H6 修复)。

      默认实现基于 get + remove(非原子);建议实现方覆写为原子操作, 如 MemoryCodeCache 使用 ConcurrentHashMap.remove(key, value)(仅当映射为该值时删除), Redis 实现可使用 Lua 脚本保证原子性。

      Parameters:
      key - 验证码的键值
      value - 待校验的验证码值
      Returns:
      true 表示校验通过且已消费(删除),false 表示不匹配或不存在