Java教程

利用JWT生成Token

本文主要是介绍利用JWT生成Token,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JWT的介绍

废话不多说,直接来干货!!!

1.JWT的组成

在这里插入图片描述
其中重要的是:
1.有效载荷(存放的是token的具体信息,因为jwt是采用的base64编码组成,所以不要把敏感的信息存入,比如:密码)
2.签名中的秘钥也就是盐,不能泄露

在这里插入图片描述

2. JWT的生成

2.1依赖

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

2.2 token的生成

public class JwtToken{
    // 这块我是使用了主方法在测试,所以设置为了静态
      private static String secret = "yyds";

    public static void main(String[] args) {
        Map<String, Object> header = new HashMap<String, Object>();
        header.put(JwsHeader.TYPE, JwsHeader.JWT_TYPE);
        header.put(JwsHeader.ALGORITHM, "HS256");

        Map<String, Object> claims = new HashMap<String, Object>();
        claims.put("phone", "15191847514");
        claims.put("id", "2");

        // 生成token
        String jwt = Jwts.builder()
                .setHeader(header)  //header,可省略
                .setClaims(claims) //payload,存放数据的位置,不能放置敏感数据,如:密码等
                .signWith(SignatureAlgorithm.HS256, secret) //设置加密方法和加密盐
                .setExpiration(new Date(System.currentTimeMillis() + 3000)) //设置过期时间,3秒后过期
                .compact();

        System.out.println(jwt);
    }

}

2.3 token的解析

public class ParseToken {
    public static void main(String[] args) {
        // 这块的token使用的是上面生成的token
        String token ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwaG9uZSI6IjE1MTkxODQ3NTE0IiwiaWQiOiIyIn0.e9Fu7rOq70dsg1X0yBVLF1xFJnh6r67anVdO7XxVdyA";
       String secret = "yyds";
        // 通过token解析数据
        Map<String, Object> body = Jwts.parser()
                .setSigningKey(secret)
                .parseClaimsJws(token)
                .getBody(); 
        System.out.println(body);

    }
这篇关于利用JWT生成Token的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!