侧边栏壁纸
博主头像
学校乐园369博主等级

没有你学不会的,只会是你不想学

  • 累计撰写 8 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java实现JSON Web Token(JWT)的生成、解码和验证

xiaoke
2024-03-08 / 0 评论 / 0 点赞 / 4080 阅读 / 3451 字

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。

0

评论区