KyleWang
发布于 2024-03-03 / 43 阅读
0
0

SpringBoot(二) JWT校验相关知识

JWT 令牌

1、组成:
  1. Header(头)记录令牌的类型和签名算法等

  2. PayLoad(载荷)装载自定义信息 (注意不要存放私密信息)

  3. Signature(签名)对头部和载荷进行加密计算得来

2、使用
  1. 引入java-jwt坐标

  2. 调用API生成和校验令牌

  3. 解析令牌抛出异常就证明令牌被篡改或者过期

<dependency>
  <groupId>com.auth0</groupId>
  <artifactId>java-jwt</artifactId>
  <version>4.4.0</version>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>
public class JwtTest {

    @Test
    public void testGen() {
        Map<String,Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("username","张三");
        String token = JWT.create()
                .withClaim("user", claims)//添加载荷
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60))//添加过期时间
                .sign(Algorithm.HMAC256("itheima"));//指定算法,配置密钥

        System.out.println(token);
    }

    @Test
    public void testParse(){
        //定义字符串
        String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" +
                ".eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE3MDk0Njg5NjZ9" +
                ".VM4PL7LEN7ct3R8VZMRMf9EQFRpd_TCfoEd66S0aBuI";
        JWTVerifier itheima = JWT.require(Algorithm.HMAC256("itheima"))
                .build();

        DecodedJWT verify = itheima.verify(token);
        Map<String, Claim> claims = verify.getClaims();
        System.out.println(claims.get("user"));
    }

}


评论