2018-04-24 15:12
@hahahahhaha 要引用jjwt的包,
io.jsonwebtoken
jjwt
0.4
2018-04-16 15:11
/**
* @param subject 当前token对应的User标识,放header
* @param audience 接收者,放header
* @param TTLMillis 过期时间
* @param data 当前User相关情报信息,放body
* @return jwt字符串
*/
private static String createJWT(String subject, String audience,
long TTLMillis, Map data) {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
Map header = new HashMap();
header.put("IssuedAt", now); // 创建时间
header.put("Subject", subject); // 主题:用户标识
header.put("Issuer", issuer); // 发布者
header.put("Audience", audience); // 接收者
header.put("typ", "JWT");
// 添加构成JWT的参数
JwtBuilder builder = Jwts.builder()
.setHeader(header)
.setClaims(data)
.signWith(signatureAlgorithm, key.getBytes());
// 添加Token过期时间
if (TTLMillis >= 0) { // 过期时间
long expMillis = nowMillis + TTLMillis;
Date exp = new Date(expMillis); // 现在是什么时间
builder.setExpiration(exp).setNotBefore(now); // 系统时间之前的token都是不可以被承认的
}
// 生成JWT
return builder.compact();
}