本文章主要为了方便将工具类代码复制粘贴,快速开发,将JWT封装为工具类使用。
注:jdk17 + SpringBoot3
1.引入JWT依赖
<!-- JWT依赖,
当前版本为最新版本,
我使用的springboot也是最新的3.0
如果你需要改变版本,查询maven repository,修改版本即可
-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
2.创建工具包,并创建JwtUtil工具类
有工具包utils则直接在包中创建JwtUtil工具类即可
3.将以下代码复制粘贴在工具类中
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Calendar;
import java.util.Map;
/**
* @ClassName: JwtUtil JWT的工具封装
*/
public class JwtUtil {
/**
* @Field: KEY 加密的秘钥
*/
private final static String KEY="2023/8/10Epiphyllum@Fat";
/**
* @Method: getToken 根据传入的map封装成Token
* @param map
* @return
*/
public static String getToken(Map<String,String> map){
//创建JWT builder
JWTCreator.Builder builder = JWT.create();
//对需要封装的数据进行遍历并设置在JWT中
map.forEach((k,v)->{
builder.withClaim(k,v);
});
//创建一个日期类并设置过期时间,设置了七天的过期时间
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DATE, 7);
//设置过期时间并设置签名算法返回一个Token
String token = builder.withExpiresAt(instance.getTime())
.sign(Algorithm.HMAC256(KEY));
return token;
}
/**
* @param token
* @return
* @Method: verifyToken 验证Token,并返回DecodedJWT对象
*/
public static DecodedJWT verifyToken(String token) {
//创建一个JWTVerifier对象并传入加密算法和秘钥
return JWT.require(Algorithm.HMAC256(KEY)).build().verify(token);
}
/**
* 用于直接获取数据
* @param token 传入token
* @param KEY 从token中获取传入的KEY的值
*/
public static String getData(String token,String KEY{
return verifyToken(token).getClaim(KEY).asString();
}
}
具体请看代码的注释,KEY可以放到外部文件保证一定的安全性,这里就不做过多的操作了。