JWT导入依赖太少导致的异常

文章讲述了在使用io.jsonwebtoken时遇到的ClassNotFoundException,原因是只导入了jjwt-api依赖,而未添加jjwt-impl。解决办法是确保在运行时类路径中包含jjwt-impl.jar。
摘要由CSDN通过智能技术生成
问题描述:

io.jsonwebtoken.lang.UnknownClassException: Unable to load class named [io.jsonwebtoken.impl.DefaultJwtBuilder] from the thread context, current, or system/application ClassLoaders.  All heuristics have been exhausted.  Class could not be found.  Have you remembered to include the jjwt-impl.jar in your runtime classpath?

解决方法:

我只导入了jjwt-api这一个依赖

     <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.2</version>
        </dependency>

应该再添加两个依赖才可以

   <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.1</version>
            <scope>runtime</scope>
        </dependency>

在创建项目时,可以使用Maven将com.auth0的java-jwt依赖项添加到pom.xml中。 关于为什么要使用两个JWT token的问题,原因是这两个token有不同的职责。access token用于业务系统交互,是最核心的数据,而refresh token则用于向认证中心获取新的access token和refresh token。当用户超过30分钟后,access token已经失效,此时将access token发送给认证中心是无法解析的。但refresh token由于生存时间更长且与access token的主体内容一致,因此发送给认证中心后可以被正确解析,并生成新的access token和refresh token。这样就能实现token的替换和更新。 在JWT中,还有一些标准的声明,包括注册的声明和私有的声明。注册的声明是一些标准中推荐使用的声明,包括iss(jwt签发者)、sub(jwt所面向的用户)、aud(接收jwt的一方)、exp(jwt的过期时间)、nbf(定义在什么时间之前该jwt是不可用的)、iat(jwt的签发时间)和jti(jwt的唯一身份标识,用于防止重放攻击)。 所以,jwt token依赖包括com.auth0的java-jwt和相关的标准声明。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [DecodeIdToken:通过JWT解码ID TOKEN](https://download.csdn.net/download/weixin_42138788/15396844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JWT快速入门及所需依赖](https://blog.csdn.net/huangziweilii/article/details/128334713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值