目录
前言
JWT相信小伙伴们不陌生了,JSON Web Token (JWT) 是一种流行的身份验证机制,它使用数字签名来验证和保护数据的完整性。看下该工具的日常使用方式
JWTUtil工具类
@Slf4j
@Component
@RequiredArgsConstructor
public class JWTUtil {
//以下为自己的配置
private String secret = "yourSecret";
private String tokenHead = "yourTokenHead";
private Long expiration = "yourExpiTime";
/**
* 生成签名,指定时间后过期,一经生成不可修改,令牌在指定时间内一直有效
*
* @return 加密的token
*/
public String sign() {
try {
long currentTimeMillis = System.currentTimeMillis();
Date date = new Date(currentTimeMillis + (expiration * 1000));
Map<String, Object> map = new HashMap<>();
//设置算法类型
map.put("alg", "HS256");
map.put("typ", "JWT");
//加密算法
Algorithm algorithm = Algorithm.HMAC256(secret);
// 附带username信息
String token = JWT.create()
.withHeader(map)//设置头部信息
.withAudience("MANAGE")//设置 载荷 签名的观众 也可以理解谁接受签名的
//签发时间
.withIssuedAt(new Date(currentTimeMillis))
//过期时间
.withExpiresAt(date)
.sign(algorithm);
if (StringUtils.hasText(token)) {
token = tokenHead + " " + token;
}
return token;
} catch (Exception e) {
return null;
}
}
//不设置过期时间
public String signForever(JwtUserBO jwtUser) {
try {
long currentTimeMillis = System.currentTimeMillis();
Map<String, Object> map = new HashMap<>();
map.put("alg", "HS256");
map.put("typ", "JWT");
//加密算法
Algorithm algorithm = Algorithm.HMAC256(secret);
// 附带username信息
String token = JWT.create()
.withHeader(map)//设置头部信息
.withAudience("MANAGE")//设置 载荷 签名的观众 也可以理解谁接受签名的
//签发时间
.withIssuedAt(new Date(currentTimeMillis))
.sign(algorithm);
if (StringUtils.hasText(token)) {
token = tokenHead + " " + token;
}
return token;
} catch (Exception e) {
return null;
}
}
}
使用的时候,直接将这个类注入就可以了,后面再介绍token自定义信息,这样别的接口根据token就可以获取到部分关键信息比如(用户id什么的)
以上便是jwt工具类的基础使用了,后面会分享更多常用工具类