JSON Web Token(JWT)是一种用于安全传输信息的开放标准。它可以用于认证和授权用户,以及在不同系统之间传输数据。在本文中,我们将介绍如何在 Java 中使用 jjwt 库来生成、解码和验证 JWT
引入 jjwt 库
首先,你需要在你的项目中引入 jjwt 库。如果你使用 Maven,可以在 pom.xml 中添加以下依赖:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
生成 JWT
以下是使用 jjwt 验证 JWT 的示例代码:
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtGenerator {
public static void main(String[] args) {
// 设置过期时间为 1 天
long expirationTime = System.currentTimeMillis() + 86400000;
String token = Jwts.builder()
.setSubject("user123") // 设置 subject
.setExpiration(new Date(expirationTime)) // 设置过期时间
.signWith(SignatureAlgorithm.HS256, "secret") // 设置签名
.compact();
System.out.println(token);
}
}
验证 JWT
以下是使用 jjwt 验证 JWT 的示例代码:
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureException;
public class JwtVerifier {
public static void main(String[] args) {
String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMTIzIiwiZXhwIjoxNjIwNzg3NzE3fQ.hXcJHdYvy3l0gI6HgNv6v-Tx_lL4FOWp65eGJ0YJtDk";
try {
Claims claims = Jwts.parser()
.setSigningKey("secret")
.parseClaimsJws(token)
.getBody();
System.out.println("Subject: " + claims.getSubject());
} catch (SignatureException e) {
System.out.println("Invalid token.");
}
}
}
在这个例子中,我们使用 parser() 方法解析 JWT,并使用 setSigningKey() 方法设置签名密钥。如果 JWT 验证成功,我们可以从 Claims 对象中获取 subject 值。
希望这篇文章能帮助你开始使用 jjwt 来生成、解码和验证 JWT。
评论区