首页 > 其他分享 >Springboot整合JWT测试篇(一)

Springboot整合JWT测试篇(一)

时间:2023-02-21 11:12:07浏览次数:29  
标签:Springboot 过期 JWT System token 测试 println out

一、pom文件中引入依赖

<!--引入jwt-->
<dependency>
  <groupId>com.auth0</groupId>
  <artifactId>java-jwt</artifactId>
  <version>3.4.0</version>
</dependency>

二、测试生成token值

    // 测试生成token代码
    @Test
    void createToken() {
        Calendar instance = Calendar.getInstance();
        // 设置过期时间(这里是100秒)
        instance.add(Calendar.SECOND, 100);
        //生成令牌
        String token = JWT.create()
                //负载:设置自定义用户名
                .withClaim("username", "张三")
                //设置过期时间
                .withExpiresAt(instance.getTime())
                //签名:设置签名(加盐) 保密 复杂
                .sign(Algorithm.HMAC256("tokenXiaoGao"));
        //输出令牌
        System.out.println(token);
    }

结果如下:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzY5NDc4MzYsInVzZXJuYW1lIjoi5byg5LiJIn0.eW2fjMBsv2uOqqsDeHjlJUnu-2GAtw-QVxroyNc6Tj8

三、解析token值

    // 解码token
    @Test
    void unlockToken(){
        //1.验证签名
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("tokenXiaoGao")).build();
        //2.解析token
        DecodedJWT decodedJWT = jwtVerifier.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NzY5NDc4MzYsInVzZXJuYW1lIjoi5byg5LiJIn0.eW2fjMBsv2uOqqsDeHjlJUnu-2GAtw-QVxroyNc6Tj8");
        System.out.println("用户名: " + decodedJWT.getClaim("username").asString());  // 存的是时候是什么类型,取得时候就是什么类型,否则取不到值。
        System.out.println("过期时间: "+decodedJWT.getExpiresAt());

    }

结果如下:

用户名: 张三
过期时间: Tue Feb 21 10:50:36 CST 2023

 四、常见异常

SignatureVerificationException:    签名不一致异常
TokenExpiredException:             令牌过期异常
AlgorithmMismatchException:        算法不匹配异常
InvalidClaimException:             失效的payload异常

 

标签:Springboot,过期,JWT,System,token,测试,println,out
From: https://www.cnblogs.com/Life-QX/p/17140172.html

相关文章

  • eclipse创建springBoot项目
    创建SpringBoot工程先在eclipse中安装spring-tool-suite插件,然后根据以下步骤可以创建1、新建SpringStarterProject2、Packaging选择jar 3、勾选Web项 4、项目结......
  • 一台不容错过的Java单元测试代码“永动机”
    作者:京东零售陈志良作为一名京东的软件匠人,我们开发的软件支撑着数亿的用户,责任是重大的,因此我们深深地敬畏每一行代码,那如何将我们的失误降到最低呢?那就是单元测试,它会......
  • 推荐一款新的自动化测试框架:DrissionPage!
    今天给大家推荐一款基于Python的网页自动化工具:DrissionPage。这款工具既能控制浏览器,也能收发数据包,甚至能把两者合而为一,简单来说:集合了WEB浏览器自动化的便利性和reque......
  • 性能测试的二八原则
    性能测试二八原则,响应时间2/5/8原则所谓响应时间的“2-5-8原则”,简单说,就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响......
  • 2022-03-29 测试
    关于啊哈哈哈哈暂时没有关于23221.带{%u下划线%}的文本带{%emp着重号%}的文本带{%wavy波浪线%}的文本带{%del删除线%}的文本键盘样式的......
  • http压力测试
    一、http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一......
  • 07-存储服务测试(Ceph Pacific)
    1.块存储服务测试1.1查看镜像列表rbdlist1.2映射镜像格式:rbddevicemap{pool-name}/{image-name}--id{user-name}示例:rbddevicemaprbd/myimage--idadmin......
  • SpringBoot集成Tomcat服务
    目录一、Tomcat集成1、依赖层级2、自动化配置二、Tomcat架构三、Tomcat配置1、基础配置2、属性配置类3、配置加载分析四、周期管理方法1、控制类2、核心方法五、参考源码......
  • 自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
    介绍Selenium官网:https://www.selenium.dev/Selenium是功能强大的自动化测试工具集,是支持Web浏览器自动化的一系列工具和库的总括项目,一共包括以下三个项目:Seleniu......
  • 基于 springboot + mybatis-plus + MySQL 重构过去一个项目的踩坑总结(持续更新)
    ①使用mybatis-plus时,如果根据某个条件查询没有查到数据,那么返回的实体类是null,如果使用get方法就会导致空指针异常,这点要规避②如果Map初始化在循环体外,那么在循......