JwtUtil工具类
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
配置文件
jwt.alg: HS256//jwt header信息
jwt.expire: 604800//jwt 过期时间
jwt.secret: ji8n3439n439n43ld9ne9343fdfer49h//加密盐
注意事项:非必要,个人习惯,方便修改.这些信息也可以直接放在JwtUtil类中.
代码
@Component
@Data
public class JwtUtil {
//从配置文件中获取信息
@Value("${jwt.alg}")
private String alg;
@Value("${jwt.expire}")
private Long expire;
@Value("${jwt.secret}")
private String secret;
public String generateJWT(String userId,String username){
Map<String, String> claims= new HashMap<>();
claims.put("userId",userId);
claims.put("username",username);
Date expireTime = new Date(new Date().getTime()+1000*expire);
String jwt = Jwts.builder()
.setHeaderParam("typ","JWT")
.setHeaderParam("alg",alg)
.setId(userId)
.setSubject(username)
.setExpiration(expireTime)
.signWith(SignatureAlgorithm.HS256,secret)
.compact();
return jwt;
}
public Claims parseJWT(String jwt){
Claims claims = Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(jwt)
.getBody();
return claims;
}
//判断是否过期
public boolean isTokenExpired(Claims claims){
return claims.getExpiration().before(new Date());
}
}