import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.Map;

public class JwtUtils {

private static String signKey = "itheima";
private static Long expire = 43200000L; //12小時

/**
* 生成JWT令牌
* @param claims JWT第二部分負載 payload 中存儲的內容
* @return
*/
public static String generateJwt(Map<String, Object> claims){
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256, signKey) //指定簽名算法和密鑰
.addClaims(claims) //設置令牌中要保存的數據(載荷)
.setExpiration(new Date(System.currentTimeMillis() + expire)) //令牌的有效期
.compact();//生成令牌字符串
return jwt;
}

/**
* 解析JWT令牌
* @param jwt JWT令牌
* @return JWT第二部分負載 payload 中存儲的內容
*/
public static Claims parseJWT(String jwt){
Claims claims = Jwts.parser()
.setSigningKey(signKey) //指定簽名密鑰,要與生存jwt使用的密鑰相同
.parseClaimsJws(jwt) //解析令牌
.getBody(); ; //獲取之前保存的數據
return claims;
}
}