ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

利用JWT生成Token

2022-01-27 22:59:56  阅读:130  来源: 互联网

标签:String JWT token 生成 header Token put public


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);

    }

标签:String,JWT,token,生成,header,Token,put,public
来源: https://blog.csdn.net/weixin_51631350/article/details/122724554

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有