JwtTokenUtils.java import com.auth0.jwt.JWT;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import com.auth0.jwt.exceptions.JWTCreationException;import com.auth0.jwt.exceptions.JWTVerificationException;import com.
import com.auth0.jwt.JWT; import com.auth0.jwt.JWTVerifier; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.exceptions.JWTCreationException; import com.auth0.jwt.exceptions.JWTVerificationException; import com.auth0.jwt.interfaces.DecodedJWT; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by https://github.com/kuangcp on 17-12-16 下午11:20 * 默认采用HS256加密,将JWT的三段数据格式,去除掉第一部分,减轻传输压力 * @author kuangcp */ public class JwtTokenUtils { private static String SECRET = "kuangcp"; public static final String CREATE_FAIL = "CREATE_FAIL"; public static final String VERIFY_FAIL = "VERIFY_FAIL"; public static final String VERIFY_SUCCESS = "VERIFY_SUCCESS"; public static final SimpleDateFormat smf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 过期时间的设置,过期后Token就会失效 private static long EXPIRE_WEEK = 1000 * 60 * 60 * 24 * 7; private static long EXPIRE_DAY = 1000 * 60 * 60 * 24; /** * 根据id生成token * @param userId 用户id * @return token */ public static String createToken(String userId) { String token; long seconds = System.currentTimeMillis()+EXPIRE_WEEK; Date date = new Date(seconds); // System.out.println("附属参数: "+smf.format(date)); try { Algorithm algorithm = Algorithm.HMAC256(SECRET); token = JWT.create() .withIssuer(userId) .withExpiresAt(date) .sign(algorithm); } catch (UnsupportedEncodingException | JWTCreationException exception) { return CREATE_FAIL; } return token.substring(37,token.length()); } /** * 对token进行解析,如果有效就返回正确 * @param token token字符串 * @param userId 用户id * @return 校验结果 success/failed 成功/失败 */ public static String verifyToken(String token, String userId){ // 第一部分,如果更改了加密协议,这里也要改 token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."+token; try { Algorithm algorithm = Algorithm.HMAC256(SECRET); JWTVerifier verifier = JWT.require(algorithm) .withIssuer(userId) .build(); DecodedJWT jwt = verifier.verify(token); Date expire = jwt.getExpiresAt(); // return VERIFY_SUCCESS; return smf.format(expire); } catch (UnsupportedEncodingException | JWTVerificationException exception){ return VERIFY_FAIL; } } }pom.xml
com.auth0 java-jwt3.3.0