修正项目结构

This commit is contained in:
2026-05-31 04:46:30 +08:00
parent e69168775c
commit c2663c9ddd
7 changed files with 0 additions and 0 deletions
+136
View File
@@ -0,0 +1,136 @@
# JWT工具类使用说明
## 概述
本项目提供了一个完整的JWT(JSON Web Token)工具类,用于生成、验证和解析JWT令牌。
## 文件结构
```
src/main/java/com/caiji/uls/utils/jwt/
├── JwtUtil.java # JWT工具类,提供核心功能
└── JwtConfig.java # JWT配置类,管理密钥和过期时间
src/main/java/com/caiji/uls/config/
└── JwtConfigInitializer.java # Spring Boot配置初始化类
src/main/java/com/caiji/uls/controller/
└── JwtTestController.java # 测试控制器,演示使用方法
```
## 配置说明
`application.properties` 中添加以下配置:
```properties
# JWT配置
jwt.secret=your-secret-key-for-jwt-token-generation-and-validation-must-be-long-enough
jwt.expiration=86400000
```
- `jwt.secret`: JWT签名密钥(建议至少32个字符)
- `jwt.expiration`: 令牌过期时间(毫秒),默认为24小时
## 主要功能
### 1. 生成JWT令牌
```java
// 基本用法
String token = JwtUtil.generateToken(userId, username);
// 带额外声明信息
Map<String, Object> claims = new HashMap<>();
claims.put("role", "admin");
String token = JwtUtil.generateToken(userId, username, claims);
```
### 2. 验证JWT令牌
```java
boolean isValid = JwtUtil.validateToken(token);
```
### 3. 从令牌中获取信息
```java
// 获取用户ID
String userId = JwtUtil.getUserIdFromToken(token);
// 获取用户名
String username = JwtUtil.getUsernameFromToken(token);
```
### 4. 检查令牌是否过期
```java
boolean isExpired = JwtUtil.isTokenExpired(token);
```
### 5. 刷新JWT令牌
```java
String newToken = JwtUtil.refreshToken(oldToken);
```
## API接口示例
启动应用后,可以使用以下API接口测试JWT功能:
### 生成令牌
```
POST /api/jwt/generate?userId=1&username=testuser
```
### 验证令牌
```
POST /api/jwt/validate?token=your_jwt_token_here
```
### 解析令牌
```
POST /api/jwt/parse?token=your_jwt_token_here
```
### 刷新令牌
```
POST /api/jwt/refresh?token=your_jwt_token_here
```
## 安全建议
1. **密钥安全**:
- 使用足够长的随机字符串作为密钥(至少32个字符)
- 不要将密钥硬编码在代码中
- 在生产环境中使用环境变量或配置中心管理密钥
2. **过期时间**:
- 根据业务需求设置合理的过期时间
- 敏感操作建议使用较短的过期时间
3. **HTTPS**:
- 在生产环境中始终使用HTTPS传输JWT令牌
## 依赖说明
项目使用了以下JWT依赖(已在pom.xml中配置):
```xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.12.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.12.5</version>
<scope>runtime</scope>
</dependency>
```