package com.salong.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Calendar;
import java.util.Map;
/**
* @author Salong
* @description jwt工具类(基于com.auth0.java-jwt 的3.4.0版本,别的版本可能不存在JWT静态类)
* @date 2020/12/8 9:11
* @Email:salong0503@aliyun.com
*/
public class JwtUtils {
// @Value("{jwt.SIGNATURE}")
// private String SIGNATURES;
// @Value("{jwt.DESTORY_DAY}")
// private String SIGNATURE;
/**
* signature签名
*/
private static final String SIGNATURE="IU$S&39S%51OKY@NB";
/**
* jwt失效时间(天)
*/
private static final int DESTORY_DAY=7;
/**
* 获取token
* map 为保存到客户端的用户信息,避免存储类似密码等敏感信息
* @return
*/
public static String getToken(Map<String,String> map){
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DATE,DESTORY_DAY);
JWTCreator.Builder builder = JWT.create();
map.forEach((k,v)->{
builder.withClaim(k,v);
});
String token=builder
.withExpiresAt(instance.getTime()) //设置过期时间
.sign(Algorithm.HMAC256(SIGNATURE)); //设置签名和加密方式,这里用HMAC256
return token;
}
/**
* 验证token (无返回信息,异常则验证失败)
* @param token
* @return
*/
public static void verify(String token){
JWT.require(Algorithm.HMAC256(SIGNATURE)).build().verify(token);
}
/**
* 验证token (返回token信息,异常则验证失败)
* @param token
*/
public static DecodedJWT verifyWithInfo(String token){
return JWT.require(Algorithm.HMAC256(SIGNATURE)).build().verify(token);
}
}