知乎专栏 |
.withNotBefore(new Date())
public static String token() { Calendar calendar = Calendar.getInstance(); // instance.add(Calendar.SECOND, Config.Api.expired); // 这里是 token 过期时间 calendar.add(Calendar.DATE, Config.Api.expired); try { Algorithm algorithm = Algorithm.HMAC256(Config.Api.appSecret); String token = JWT.create() .withJWTId(Config.Api.appKey) .withKeyId(Config.Api.appKey) .withIssuer(Config.Api.appId) .withIssuedAt(new Date()) .withSubject(Config.Api.subject) .withAudience(Config.Api.audience) .withExpiresAt(calendar.getTime()) .withNotBefore(new Date()) .sign(algorithm); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String datetime = formatter.format(calendar.getTime()); Log.d(TAG, "Calendar:" + datetime + " Token: " + token); return token; } catch (JWTCreationException exception) { Log.d(TAG, exception.getMessage()); } return null; }
.acceptLeeway(3) 允许时间无差
JWTVerifier verifier = JWT.require(algorithm) // specify an specific claim validations .withIssuer(business.getAppId()) .withJWTId(business.getAppKey()) .withSubject(business.getSubject()) .withAudience(business.getAudience()) .acceptLeeway(3) // reusable verifier instance .build();