在token前后端分离中,后台token工具类设计实现:
-
依赖jar包
gradle配置:
//token util tools jar
compile ‘com.nimbusds:nimbus-jose-jwt:5.4’ -
生成token、校验token和解析token用户信息
import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; import com.google.gson.Gson; import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSHeader; import com.nimbusds.jose.JWSObject; import com.nimbusds.jose.JWSSigner; import com.nimbusds.jose.JWSVerifier; import com.nimbusds.jose.Payload; import com.nimbusds.jose.crypto.MACSigner; import com.nimbusds.jose.crypto.MACVerifier; import net.minidev.json.JSONObject; /** * token工具类 * * @author *** * @version Created:2018年12月26日 * */ public class TokenUtil { /**** * 依赖jar包: * compile com.nimbusds:nimbus-jose-jwt:5.4 compile * com.google.code.gson:gson:2.8.5 */ /** * 1.创建一个32-byte的密匙 */ private static final byte[] SECRET_KEY = "xxxxxxxxxxx".getBytes(); /**** * token创建时间 (避免key被自定义保存数据覆盖) */ private static final String CREATE_TIME_KEY = "__cas_create_time"; /**** * token失效时间 */ private static final String INVALID_TIME_KEY = "__cas_invalid_time"; /**** * 生成token * * @param payloadMap * 用户数据信息 * @param invalidTime * 失效时间 * @return */ public static String createToken(Map<String, Object> payloadMap, long createTime, long invalidTime) { try { if (invalidTime < createTime) { System.out.println("====> 失效时间必须大于创建时间..."); return null; } if (CollectionUtils.isEmpty(payloadMap)) { payloadMap = new HashMap<String, Object>(); } payloadMap.put(CREATE_TIME_KEY, System.currentTimeMillis()); payloadMap.put(INVALID_TIME_KE