首先导入jwt依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
添加生成token的工具类
public class JwtHelper {
//token的生效时间
private static long tokenExpiration = 365 * 24 * 60 * 60 * 1000;
//生成token用的密钥
private static String tokenSignKey = "123456";
//根据用户id和用户名称生成token字符串 注可以用任意参数来生成token 也可以用对象
public static String createToken(Long userId, String username) {
String token = Jwts.builder()
//分类
.setSubject("AUTH-USER")
//设置token的有效时常
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
//主体部分
.claim("userId", userId)
.claim("username", username)
//签名部分
.signWith(SignatureAlgorithm.HS512, tokenSignKey)
.compressWith(CompressionCodecs.GZIP)
.compact();
return token;
}
//从生成token字符串获取用户id
public static Long getUserId(String token) {
try {
if (StringUtils.isEmpty(token)) return null;
//获取主体部分
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
Claims claims = claimsJws.getBody();
Integer userId = (Integer) claims.get("userId");
return userId.longValue();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
使用时直接(类.方法)