taolib.testing.auth.blacklist#

令牌黑名单模块。

提供令牌吊销功能的 Protocol 接口和多种实现。

Classes#

TokenBlacklistProtocol

令牌黑名单 Protocol。

RedisTokenBlacklist

基于 Redis 的令牌黑名单。

InMemoryTokenBlacklist

基于内存的令牌黑名单。

NullTokenBlacklist

空操作黑名单。

Module Contents#

class taolib.testing.auth.blacklist.TokenBlacklistProtocol#

Bases: Protocol

令牌黑名单 Protocol。

定义令牌黑名单的标准接口,支持多种存储后端。

async add(jti: str, ttl_seconds: int) None#

将令牌加入黑名单。

参数:
  • jti -- 令牌的唯一标识(JWT ID)

  • ttl_seconds -- 黑名单条目的存活时间(秒),应与令牌剩余有效期对齐

async is_blacklisted(jti: str) bool#

检查令牌是否在黑名单中。

参数:

jti -- 令牌的唯一标识

返回:

如果令牌已被吊销返回 True

class taolib.testing.auth.blacklist.RedisTokenBlacklist(redis_client: Any, key_prefix: str = 'taolib:auth:blacklist:')#

基于 Redis 的令牌黑名单。

使用 Redis SET + EX 命令存储,TTL 自动过期确保黑名单不会无限增长。

参数:
  • redis_client -- redis.asyncio.Redis 客户端实例

  • key_prefix -- Redis 键前缀

_redis#
_prefix = 'taolib:auth:blacklist:'#
async add(jti: str, ttl_seconds: int) None#

将令牌加入 Redis 黑名单。

async is_blacklisted(jti: str) bool#

检查令牌是否在 Redis 黑名单中。

class taolib.testing.auth.blacklist.InMemoryTokenBlacklist#

基于内存的令牌黑名单。

使用字典存储,检查时自动清理过期条目。适用于测试和单进程开发环境。

_store: dict[str, float]#
async add(jti: str, ttl_seconds: int) None#

将令牌加入内存黑名单。

async is_blacklisted(jti: str) bool#

检查令牌是否在内存黑名单中。

class taolib.testing.auth.blacklist.NullTokenBlacklist#

空操作黑名单。

不执行任何操作,is_blacklisted 始终返回 False。 用于不需要黑名单功能的场景。

async add(jti: str, ttl_seconds: int) None#

空操作。

async is_blacklisted(jti: str) bool#

始终返回 False。