package com.aisi.template.constants; /** * 安全相关常量类 * 定义系统中的安全相关常量 * * 主要分类: * 1. Token 相关:Token 前缀、过期时间 * 2. Redis 键前缀:黑名单、刷新令牌、限流、登录尝试 * 3. 安全配置:最大失败次数、锁定时长 * * @author Claude * @since 2024-04-09 */ public class SecurityConstants { /** * JWT Token 请求头名称 * - HTTP 请求头:Authorization * - 示例:Authorization: Bearer {token} */ public static final String TOKEN_HEADER = "Authorization"; /** * JWT Token 前缀 * - Bearer 认证方案 * - 示例:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... */ public static final String TOKEN_PREFIX = "Bearer "; /** * JWT Token 类型 * - 用于文档标识 * - 值:Bearer */ public static final String TOKEN_TYPE = "Bearer"; /** * Token 黑名单 Redis 键前缀 * - 格式:token:blacklist:{jti} * - jti:JWT ID(JWT 唯一标识) * - 示例:token:blacklist:abc123-def456 */ public static final String REDIS_KEY_BLACKLIST_PREFIX = "token:blacklist:"; /** * Refresh Token Redis 键前缀 * - 格式:refresh_token:{tokenHash} * - tokenHash:Token 的 SHA-256 哈希值 * - 示例:refresh_token:a1b2c3... */ public static final String REDIS_KEY_REFRESH_TOKEN_PREFIX = "refresh_token:"; /** * 限流 Redis 键前缀 * - 格式:rate_limit:{type}:{identifier} * - type:ip(按 IP)、user(按用户)、global(全局) * - identifier:IP 地址、用户ID 等 * - 示例:rate_limit:ip:192.168.1.1 */ public static final String REDIS_KEY_RATE_LIMIT_PREFIX = "rate_limit:"; /** * 登录尝试 Redis 键前缀 * - 格式:login_attempts:{username} * - 示例:login_attempts:user01 */ public static final String REDIS_KEY_LOGIN_ATTEMPTS_PREFIX = "login_attempts:"; /** * 默认 Access Token 过期时间(秒) * - 1 小时 = 3600 秒 */ public static final long DEFAULT_ACCESS_TOKEN_EXPIRATION = 3600; /** * 默认 Refresh Token 过期时间(秒) * - 7 天 = 604800 秒 */ public static final long DEFAULT_REFRESH_TOKEN_EXPIRATION = 604800; /** * 最大登录失败次数 * - 超过此次数后锁定账户 * - 默认:5 次 */ public static final int MAX_LOGIN_ATTEMPTS = 5; /** * 默认账户锁定时长(分钟) * - 连续失败达到阈值后的锁定时长 * - 默认:30 分钟 */ public static final int DEFAULT_LOCK_DURATION_MINUTES = 30; /** * 私有构造函数 * - 防止实例化 */ private SecurityConstants() { // 防止实例化 } }