feat: 实现完整的 RBAC 权限管理系统与基础设施增强
在初始认证基础上,新增完整的 RBAC 权限模型(角色、权限、菜单三级管理), 集成审计日志、接口限流、登录失败锁定、Refresh Token 机制、Redis 分布式缓存与锁、 RocketMQ 消息队列,并引入 Flyway 数据库版本管理,同时补充项目文档与使用示例
This commit is contained in:
103
src/main/java/com/aisi/template/constants/SecurityConstants.java
Normal file
103
src/main/java/com/aisi/template/constants/SecurityConstants.java
Normal file
@@ -0,0 +1,103 @@
|
||||
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() {
|
||||
// 防止实例化
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user