• jwt


    解析token

    https://jwt.io/

    maven依赖

        <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
        </dependency>

    测试

    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"));
    
    
        }
  • 相关阅读:
    【字符串/广搜】P1032 字串变换
    【动态规划】P1541 乌龟棋
    【动态规划/递归】(团队内部比赛试题)T134293 T2.货币系统问题
    Redis-事务
    Redis-Pipeline
    Redis-通过前缀获取所有key
    Spring 三级缓存
    TopK_LRU_归并

    如何从一亿个数组里找出最大的十个
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/16084477.html
Copyright © 2020-2023  润新知