给我写一个jwt的java工具类
时间: 2023-08-07 10:57:29 浏览: 139
当涉及到JWT(JSON Web Token)的处理,Java中有一些库可以使用,例如 JJWT 和 Nimbus-JOSE-JWT。下面是一个简单的示例,使用 JJWT 库实现 JWT 的生成和解析的 Java 工具类:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JwtUtils {
private static final String SECRET_KEY = "your_secret_key";
private static final long EXPIRATION_TIME = 86400000; // 24 hours
public static String generateToken(String subject) {
Date now = new Date();
Date expiration = new Date(now.getTime() + EXPIRATION_TIME);
Map<String, Object> claims = new HashMap<>();
claims.put("sub", subject);
return Jwts.builder()
.setClaims(claims)
.setIssuedAt(now)
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}
public static String getSubjectFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
}
}
```
使用时,可以调用 `generateToken` 方法生成一个 JWT,并将其传递给客户端。在需要验证和解析 JWT 的地方,可以调用 `getSubjectFromToken` 方法提取出 JWT 中的 subject(主题)信息。
请注意,上述示例中的 `SECRET_KEY` 是用于签名和验证 JWT 的密钥,应该保持安全并且不能泄露。另外,`EXPIRATION_TIME` 是 JWT 的过期时间,可以根据自己的需求进行调整。
阅读全文