jwt 解析 token java 代码
时间: 2023-11-26 16:39:11 浏览: 73
要在 Java 中解析 JWT,您需要使用 JWT 库。这是一个示例代码:
```
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
// 解析 JWT
String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2huIERvZSIsImV4cCI6MTU5MzY0MTAzMH0.m1GQKbq_O3OLaJFZo2PQRlKjYG9O-VC1N0gL-cjJb3k";
Jws<Claims> claims = Jwts.parser()
.setSigningKey("secretkey")
.parseClaimsJws(jwt);
String subject = claims.getBody().getSubject();
// 创建 JWT
Claims claims = Jwts.claims().setSubject("John Doe");
claims.put("userId", "12345");
claims.put("role", "admin");
String jwt = Jwts.builder()
.setClaims(claims)
.signWith(SignatureAlgorithm.HS256, "secretkey")
.compact();
```
在这里,我们使用了 `io.jsonwebtoken` 库中的 `Jwts` 工具类来创建和解析 JWT。
首先,使用 `Jwts.parser().setSigningKey("secretkey").parseClaimsJws(jwt)` 方法来解析 JWT。该方法返回一个 `Jws` 类型的对象,其中包含 JWT 的声明(claims)。您可以使用 `claims.getBody().getSubject()` 来获取 JWT 中设置的主题(subject)。
然后,使用 `Jwts.claims().setSubject("John Doe")` 创建声明对象,并使用 `claims.put("userId", "12345")` 和 `claims.put("role", "admin")` 方法来设置其他声明。最后,使用 `Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS256, "secretkey").compact()` 方法来创建带有签名的 JWT。
阅读全文