以下是关于“JWT——生成Token、解析Token的简单工具类”的完整攻略,过程中包含两个示例。
背景
在Web开发中,JWT(JSON Web Token)是一种常用身份验证和授权机制。本攻略将介绍如何使用Java编写一个简单的JWT工具类,用于生成Token和解析Token。
基本原理
在Java中,我们可以使用第三方库jjwt来生成和解析JWT。具体步骤如下:
- 添加依赖。
我们需要在项目中添加jjwt的依赖。
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
- 编写工具类。
我们需要编写一个工具类,用于生成Token和解析Token。
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtUtils {
private static final String SECRET_KEY = "my_secret_key";
public static String generateToken(String subject, long ttlMillis) {
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
return Jwts.builder()
.setSubject(subject)
.setIssuedAt(now)
.setExpiration(new Date(nowMillis + ttlMillis))
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}
public static String parseToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
}
}
- 使用工具类。
我们可以使用工具类来生成Token和解析Token。
// 生成Token
String token = JwtUtils.generateToken("user_id_123", 3600000);
// 解析Token
String userId = JwtUtils.parseToken(token);
以下是两个生成Token和解析Token的例:
示例1
假设我们需要生成一个Token,有效期为1小时,并将其解析出来。我们可以按照以下步骤进行:
- 生成Token。
我们需要调用generateToken()
方法生成Token。
String token = JwtUtils.generateToken("user_id_123", 3600000);
- 解析Token。
我们需要调用parseToken()
方法解析Token。
String userId = JwtUtils.parseToken(token);
示例2
假设我们需要生成一个Token,有效期为30分钟,并将其解析出来。可以按照以下步骤进行:
- 生成Token。
我们需要调用generateToken()
方法生成Token。
String token = JwtUtils.generateToken("user_id_456", 1800000);
- 解析Token。
我们需要调用parseToken()
方法解析Token。
String userId = JwtUtils.parseToken(token);
结论
在Java中,我们可以使用第三方库jjwt来生成和解析JWT。通过添加依赖、编写工具类和使用工具类,我们可以轻松地生成Token和解析Token。无论是在Web开发领域还是在科学研究中,JWT都是一种非常有用的身份验证和授权机制。