登录校验-JWT令牌-生成和校验

目录

JWT-生成

具体代码

 运行结果如下

JWT-校验

具体代码

运行结果如下

小结


JWT-生成

具体代码

   /**
     * 测试JWT令牌的生成
     */

    @Test
    public void TestJWT() {
        // 设置自定义内容
        Map claims = new HashMap<>();
        claims.put("id", 1);
        claims.put("name", "hkm");
        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, "secretKey") // 设置签名算法及密钥名称
                .setClaims(claims) // 设置自定义内容(载荷)
                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置令牌有效期为1小时
                .compact();
        System.out.println(jwt);
    }

 运行结果如下

eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaGttIiwiaWQiOjEsImV4cCI6MTY5MzAzNTk3NX0.6PeZU0Zk9znGehWzIS7ts03WIdatpxjVZWXg2JcRNbk

JWT-校验

具体代码

    /**
     * 校验JWP令牌的生成
     */
    @Test
    public void TestParseJWT() {
        Claims claims = Jwts.parser()
                .setSigningKey("secretKey") // todo 设置对应的密钥名称
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaGttIiwiaWQiOjEsImV4cCI6MTY5MzAzNTk3NX0.6PeZU0Zk9znGehWzIS7ts03WIdatpxjVZWXg2JcRNbk")// todo 设置要解析的JWT令牌内容
                .getBody(); // todo 获取body部分信息
        System.out.println(claims);
    }

运行结果如下

{name=hkm, id=1, exp=1693035975}

小结

  • JWT校验时使用的签名密钥,必须和生成JWT令牌时使用的密钥是配套的
  • 如果JWT令牌解析校验时报错,则说明JWT令牌被篡改或者失效了(超过了有效器),令牌非法

你可能感兴趣的:(Java,Web学习跟踪笔记,java,前端,服务器,jwt,令牌技术)