JWT生成token及报错解决方案
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
使用JWT生成token
@RestController
public class AutherController {
@RequestMapping("/login")
public BaseResultBean auther(@RequestBody User user, HttpServletResponse response){
BaseResultBean bean = new BaseResultBean();
if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){
// 则认为登录成功,本代码的重点在于如何生成JWT,对于登录实现只是简单带过
bean.setCode("1");
bean.setMsg("login successful");
Instant now = Instant.now();
String jwt = Jwts.builder()
.setSubject("admin01") // 设置当前的用户是谁,可以传递任意的数据
.setIssuedAt(Date.from(now)) // 设置开始的时间
.setExpiration(Date.from(now.plusSeconds(3600))) // 从开始生效的日期开始往后顺延3600秒,即有效期
.claim("id",1) // 可以是任意内容,主要是键值对的形式,需要时取出即可
.claim("permissions","admin")
.signWith(SignatureAlgorithm.HS256,"shezhimima".getBytes()) // 设置签名的算法和秘钥值
.compact();
System.out.println(jwt);
// 将生成的JWT放在响应头返回
response.addHeader("token",jwt);
}else {
bean.setCode("0");
bean.setMsg("login failure");
}
return bean;
}
}
通过Postman测试发现,token已经成功生成
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter报错解决
我遇到这个问题的时候,查了好久都没解决,有人说是因为JDK版本太高了,我尝试降低JDK版本,可是依然不行。后来才发现,是缺少了jaxb-api依赖包,导入之后就解决了,成功生成token,希望可以帮到你。
<!-- https://mvnrepository/artifact/io.jsonwebtoken/jjwt -->
<!-- 生成JWT的依赖 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
</dependency>
更多推荐
JWT生成token及报错解决方案
发布评论