工具类
public class JwtUtil {
//定义过期时间
public static final long EXPIRE = 1000*60;
//密匙
@Value("${secret}")
private static String secret; //对应jwt签名
/**
* 生成头部信息 //对应jwt第一部分 头部信息
* @return
*/
private static Map<String, Object> createHead() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("typ", "JWT");
map.put("alg", "HS512");
return map;
}
/**
* 生成token
* @param
* @return
* @throws JsonProcessingException
*/
public static String createToken(实体类) throws JsonProcessingException {
/**以下对应jwt载荷
* ss:发行人
* exp:到期时间
* sub:主题
* aud:用户
* nbf:在此之前不可用
* iat:发布时间
* jti:JWT ID用于标识该JWT
* /
String token = Jwts.builder().setHeader(createHead()) //添加头部信息
.setSubject() //token得主题
.claim("username",实体类数据) //自定义载荷
.claim("password",实体类数据)
.claim("driver",实体类数据)
.setIssuedAt(new Date()) //签发token时候得时间
.setExpiration(new Date(System.currentTimeMillis()+EXPIRE)) //过期时间
.signWith(SignatureAlgorithm.HS256,"xxxxx").compact(); //添加密匙并加密 生成token
return token;
}
/**
* 解密token
* @param token
* @return
*/
public static Claims checkJWT(String token ){
try{
final Claims claims = Jwts.parser().setSigningKey("xxxxx").
parseClaimsJws(token).getBody();
return claims;
}catch (Exception e){ }
return null;
}
}