请生成一个token工具类
时间: 2024-02-15 18:04:38 浏览: 70
好的,以下是一个生成Token的工具类示例,代码基于Java语言实现:
```java
import java.security.Key;
import java.util.Date;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import io.jsonwebtoken.*;
public class JwtUtils {
// 生成Token的秘钥
private static final String SECRET_KEY = "mySecretKey";
// 过期时间,单位为秒
private static final int EXPIRATION_TIME = 3600;
// 生成Token
public static String generateToken(String subject) {
if (subject == null || subject.isEmpty()) {
return null;
}
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
byte[] secretBytes = DatatypeConverter.parseBase64Binary(SECRET_KEY);
Key signingKey = new SecretKeySpec(secretBytes, signatureAlgorithm.getJcaName());
JwtBuilder builder = Jwts.builder()
.setSubject(subject)
.signWith(signatureAlgorithm, signingKey);
if (EXPIRATION_TIME > 0) {
Date expiration = new Date(System.currentTimeMillis() + (EXPIRATION_TIME * 1000));
builder.setExpiration(expiration);
}
return builder.compact();
}
// 解析Token
public static String parseToken(String token) {
try {
Claims claims = Jwts.parser()
.setSigningKey(DatatypeConverter.parseBase64Binary(SECRET_KEY))
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
} catch (JwtException ex) {
return null;
}
}
}
```
使用时,可以调用 `generateToken()` 方法生成Token,调用 `parseToken()` 方法解析Token。其中,`SECRET_KEY` 是生成Token的秘钥,可以根据实际情况进行修改;`EXPIRATION_TIME` 是Token的过期时间,单位为秒,可以根据实际需求进行修改。
阅读全文