jwt


解析token

https://jwt.io/

maven依赖

    
    io.jsonwebtoken
    jjwt
    0.9.0
    

测试

package com;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.text.SimpleDateFormat;
import java.util.Date;

@SpringBootTest
class JjwtdemoApplicationTests {

//    创建token
    @Test
    public void testCreateToken(){
        //当前系统时间
        long now =System.currentTimeMillis();
//        过期时间一分钟
        long exp =now+60*1000;

        //创建JwtBuilder对象
        JwtBuilder jwtBuilder = Jwts.builder()
            //声明的标识{"jti":"8888"}
            .setId("8888")
            //主体,用户{"sub":"Rose"}
            .setSubject("Rose")
            //创建日期{"ita":"xxxxxx"}
            .setIssuedAt(new Date())
//                xxxx是盐
            .signWith(SignatureAlgorithm.HS256,"xxxx")
                //设置过期时间
            .setExpiration(new Date(exp))
            //自定义申明
            .claim("roles","admin")
            .claim("logo","xxx.jpg");
//                另外一种方法,直接传入map
//              .addClaims(map)

        //获取jwt的token
        String token = jwtBuilder.compact();
        System.out.println(token);

//        //解析token
//        System.out.println("=================");
//        String[] splist =token.split("\\.");
//        System.out.println(splist);
//        System.out.println(Base64Codec.BASE64.decodeToString(splist[0]));
//        System.out.println(Base64Codec.BASE64.decodeToString(splist[1]));
////        签名部分
//        System.out.println(Base64Codec.BASE64.decodeToString(splist[2]));
    }

    //    解析token
    @Test
    public void testParseToken(){
        String token="eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODg4Iiwic3ViIjoiUm9zZSIsImlhdCI6MTY0OTIzNDg3OSwiZXhwIjoxNjQ5MjM0OTM5LCJyb2xlcyI6ImFkbWluIiwibG9nbyI6Inh4eC5qcGcifQ.y3OQjS4kxRXU3NOcdNaCWT9_1M5sagQoUCqyfZc9_sU";
        //解析token
        Claims claims = Jwts.parser()
                .setSigningKey("xxxx")
                .parseClaimsJws(token)
                .getBody();
        System.out.println("id:"+claims.getId());
        System.out.println("subject:"+claims.getSubject());
        System.out.println("issuedAt:"+claims.getIssuedAt());

        SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("签发时间:"+simpleDateFormat.format(claims.getIssuedAt()));
        System.out.println("过期时间:"+simpleDateFormat.format(claims.getExpiration()));
        System.out.println("当前时间:"+simpleDateFormat.format(new Date()));
        //获取自定义
        System.out.println("roles:"+claims.get("roles"));
        System.out.println("logo:"+claims.get("logo"));


    }