设置超时时间的顺序有误
1.先应调用setClaims()方法设置claims属性。
2.后调用setExpiration()方法设置超时时间。
例子:
/**
* 设置认证token
* id:登录用户id
* subject:登录用户名
*
*/
public String createJwt(String id, String name, Map<String,Object> map) {
//1.设置失效时间
long now = System.currentTimeMillis();//当前毫秒
long exp = now + ttl;//加上配置文件中的过期时间(单位毫秒)
//2.创建jwtBuilder
JwtBuilder jwtBuilder = Jwts.builder().setId(id).setSubject(name)
.setIssuedAt(new Date())//设置签发时间
.signWith(SignatureAlgorithm.HS256, key);//设置签发加密方式 和秘钥
//3.根据map设置claims 也就是设置自定义的存储信息
for(Map.Entry<String,Object> entry : map.entrySet()) {
jwtBuilder.claim(entry.getKey(),entry.getValue());
}
//设置token的过期时刻点
jwtBuilder.setExpiration(new Date(exp));
//4.创建token
String token = jwtBuilder.compact();
return token;
}