public class JWTUtil {  
    private static final String secret = "ewuodsjlugrejoilks";  
  
    /**  
     * 获取JWT token  
     * @param payload 保存到payload中的内容  
     * @param ttl 有效时间  
     * @return JWT token  
     */    
    public static String getToken(Map<String, String> payload, int ttl) {  
        JWT jwt = JWT.create();  
        // 设置过期时间  
        Calendar expires = Calendar.getInstance();  
        expires.setTime(new Date());  
        expires.add(Calendar.SECOND, ttl);  
        jwt.setExpiresAt(expires.getTime());  
        // 设置payLoad  
        payload.forEach(jwt::setPayload);  
        // 设置密钥  
        jwt.setKey(secret.getBytes());  
        // 签发  
        return jwt.sign();  
    }  
  
    /**  
     * 根据key获取payload中的参数  
     * @param token JWT token  
     * @param key 参数关键值  
     * @return 关键值对应参数  
     */  
    public static String getClaim(String token, String key) {  
        try {  
            return (String) JWT.of(token).getPayload().getClaim(key);  
        } catch (Exception e) {  
            return null;  
        }  
    }  
  
    /**  
     * 获取所有的payload参数  
     * @param token JWT token  
     * @return payload中所有参数  
     */  
    public static Map<String, String> getClaims(String token) {  
        JSONObject claimsJson = JWT.of(token).getPayload().getClaimsJson();  
  
        ObjectMapper mapper = new ObjectMapper();  
        MapType mapType = mapper.getTypeFactory().constructMapType(HashMap.class, String.class, String.class);  
        try {  
            return mapper.readValue(claimsJson.toString(), mapType);  
        } catch (JsonProcessingException e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    /**  
     * 判断JWT token是否有效  
     * @param token JWT token  
     * @return token是否有效 有效:true 无效:false  
     */    
    public static Boolean verify(String token) {  
        return JWT.of(token).setKey(secret.getBytes()).verify();  
    }  
}