JWT令牌--构建和校验

使用Jwt令牌需要在pom.xml文件中添加依赖

  <!--    JWT令牌-->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
    </dependency>
</dependencies>

构建Jwt令牌 (注意:算法签名signKey的长度要大于4个字符,否则后面的过滤器获取请求头会是null)

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@SpringBootTest
class SpringbootWedDeom1ApplicationTests {

    @Test
    void contextLoads() {
    }

    @Test
    public void testGenJwt(){
        Map<String, Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("name","tom ");
        //构建JWT令牌
        String jwt = Jwts.builder()
                //指定数字签名的算法
                .signWith(SignatureAlgorithm.HS256, "BigLuna")
                //Jwt令牌存储的数据(载荷)
                .setClaims(claims)
                //设置Jwt有效期
                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000))
                //返回字符串形式的令牌
                .compact();
        System.out.println(jwt);
    }

}

使用JDK17时报错DatatypeConverter,则需要添加jaxb-api的依赖。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.1</version>
</dependency>

解析(校验)JWT令牌(注意:解析的Jwt令牌必须与对应生成的密钥一致,如果报错,则为被篡改、过期、密钥签名不正确)

/**
 * 解析JWT令牌
 */
@Test
public void testParseJwt(){
    Claims claims = Jwts.parser()
            .setSigningKey("BigLuan")
            .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTcxNTgzMTY3MX0.E41FYHUb9QqLGl6xCl9fvHZ4-ebAVlYFUN7vHUnadBI")
            .getBody();
    System.out.println(claims);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值