• 微服务项目:尚融宝(24)(后端搭建:JWT令牌测试)


    认清现实,放弃幻想,准备斗争

    一、创建Maven项目

    1、项目

    项目类型:Maven

    groupId:com.atguigu

    artifactId:jwt

    2、基本依赖


       
       
            io.jsonwebtoken
            jjwt
            0.7.0
       

       
       
            junit
            junit
            4.12
       

    二、测试JWT

    1、生成token

    1. public class JwtTests {
    2. //过期时间,毫秒,24小时
    3. private static long tokenExpiration = 24*60*60*1000;
    4. //秘钥
    5. private static String tokenSignKey = "atguigu123";
    6. @Test
    7. public void testCreateToken(){
    8. String token = Jwts.builder()
    9. .setHeaderParam("typ", "JWT") //令牌类型
    10. .setHeaderParam("alg", "HS256") //签名算法
    11. .setSubject("guli-user") //令牌主题
    12. .setIssuer("atguigu")//签发者
    13. .setAudience("atguigu")//接收者
    14. .setIssuedAt(new Date())//签发时间
    15. .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration)) //过期时间
    16. .setNotBefore(new Date(System.currentTimeMillis() + 20*1000)) //20秒后可用
    17. .setId(UUID.randomUUID().toString())
    18. .claim("nickname", "Helen")
    19. .claim("avatar", "1.jpg")
    20. .signWith(SignatureAlgorithm.HS256, tokenSignKey)//签名哈希
    21. .compact(); //转换成字符串
    22. System.out.println(token);
    23. }
    24. }

     eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJndWxpLXVzZXIiLCJpc3MiOiJhdGd1aWd1IiwiYXVkIjoiYXRndWlndSIsImlhdCI6MTY2MjYzNTc0NiwiZXhwIjoxNjYyNzIyMTQ2LCJuYmYiOjE2NjI2MzU3NjYsImp0aSI6ImQ0OGE2MTY3LWNiNzMtNGQyMi1hMjg2LTJjNDU2YWYyOTY5MiIsIm5pY2tuYW1lIjoiSGVsZW4iLCJhdmF0YXIiOiIxLmpwZyJ9.KR9MIgf0Hykpa78GyxcEAcZHe8R_onDGpr7c3Ns3Mg8

     2、解析token

    1. @Test
    2. public void testGetUserInfo(){
    3. String token = Jwts.builder()
    4. .setHeaderParam("typ", "JWT") //令牌类型
    5. .setHeaderParam("alg", "HS256") //签名算法
    6. .setSubject("guli-user") //令牌主题
    7. .setIssuer("atguigu")//签发者
    8. .setAudience("atguigu")//接收者
    9. .setIssuedAt(new Date())//签发时间
    10. .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration)) //过期时间
    11. .setNotBefore(new Date(System.currentTimeMillis())) //20秒后可用
    12. .setId(UUID.randomUUID().toString())
    13. .claim("nickname", "Helen")
    14. .claim("avatar", "1.jpg")
    15. .signWith(SignatureAlgorithm.HS256, tockenSigKey)//签名哈希
    16. .compact(); //转换成字符串
    17. System.out.println(token);
    18. JwtParser parser = Jwts.parser();
    19. Jws claimsJws = parser.setSigningKey(tockenSigKey).parseClaimsJws(token);
    20. Claims body = claimsJws.getBody();
    21. String subject = body.getSubject();
    22. Date issuedAt = body.getIssuedAt();
    23. Date notBefore = body.getNotBefore();
    24. String signature = claimsJws.getSignature();
    25. System.out.println(subject);
    26. System.out.println(notBefore);
    27. System.out.println(issuedAt);
    28. System.out.println(signature);
    29. }

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJndWxpLXVzZXIiLCJpc3MiOiJhdGd1aWd1IiwiYXVkIjoiYXRndWlndSIsImlhdCI6MTY2MjYzNTg4NywiZXhwIjoxNjYyNzIyMjg3LCJuYmYiOjE2NjI2MzU4ODcsImp0aSI6IjA0ZTBiZDk3LTFkOWItNGY5MS04M2RkLWEyMGI1OWI4Yjk1NiIsIm5pY2tuYW1lIjoiSGVsZW4iLCJhdmF0YXIiOiIxLmpwZyJ9.LPFZG5d5Y2YQuFjEKJQdrjrl_i9m5YsXECyK2qd232w
    guli-user
    Thu Sep 08 19:18:07 CST 2022
    Thu Sep 08 19:18:07 CST 2022
    LPFZG5d5Y2YQuFjEKJQdrjrl_i9m5YsXECyK2qd232w 

  • 相关阅读:
    python获取安卓Hierarchy并解析
    企业财务管理有什么作用?怎么突破企业财务管理新变局?
    c# 把 json 字符串解析成 json 对象(小例子)
    【广州华锐互动】VR虚拟现实技术助力太空探险:穿越时空,探索宇宙奥秘
    JavaEE三剑客之JDBC
    2022年全球市场军用光电系统总体规模、主要企业、主要地区、产品和应用细分研究报告
    软件测试报告有哪些内容?
    关于ASPICE 4.0评估师资质更新的说明-亚远景科技
    给出一个数组,分析当下的位置他左边有几个比他上的。
    Nacos Docker部署步骤
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126770531