JSON Web Token(JWT)是一种常用的身份验证和授权机制,在 Spring Boot 中可以方便地使用它来实现接口的加密解密。
一、JWT 简介
JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。它通过数字签名来保证数据的完整性和真实性。
二、使用步骤
- 添加依赖
在项目的 pom.xml
文件中添加 jjwt
等相关依赖。
- 生成 JWT
在服务端,根据用户信息生成 JWT。
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
public class JwtGenerator {
public static String generateJwt(String userId, String role) {
// 定义 JWT 的有效时间等参数
long expirationTime = System.currentTimeMillis() + 3600000;
// 生成 JWT
String jwt = Jwts.builder()
.setSubject(userId)
.claim("role", role)
.setExpiration(new Date(expirationTime))
.signWith(SignatureAlgorithm.HS512, "yourSecretKey")
.compact();
return jwt;
}
}
- 解析 JWT
在接口中,接收到 JWT 后进行解析,获取其中的信息。
import io.jsonwebtoken.Jwts;
public class JwtParser {
public static Map<String, Object> parseJwt(String jwt) {
// 解析 JWT
Map<String, Object> claims = Jwts.parser()
.setSigningKey("yourSecretKey")
.parseClaimsJwt(jwt)
.getBody();
return claims;
}
}
- 验证 JWT
在接口中,还需要对 JWT 进行验证,确保其合法性。
import io.jsonwebtoken.ExpiredJwtException;
public class JwtValidator {
public static boolean validateJwt(String jwt) {
try {
Jwts.parser().setSigningKey("yourSecretKey").parseClaimsJwt(jwt);
return true;
} catch (ExpiredJwtException e) {
// JWT 已过期
return false;
} catch (Exception e) {
// 其他异常
return false;
}
}
}
三、注意事项
- 密钥管理:确保密钥的安全存储和使用。
- JWT 有效期:合理设置 JWT 的有效期,避免过长或过短。
- 异常处理:处理好 JWT 验证过程中的各种异常情况。
通过以上步骤,可以在 Spring Boot 中使用 JWT 进行接口的加密解密,实现安全的身份验证和授权。