微官网是小程序吗seo规则
private static final String KEY = "abcdef";/*** 生成token** @param payload 可以存放用户的一些信息,不要存放敏感字段* @return*/public static String createToken(Map<String, Object> payload) {//十分重要,不禁用发布到生产环境无法验证GlobalBouncyCastleProvider.setUseBouncyCastle(false);DateTime now = DateTime.now();DateTime expTime = now.offsetNew(DateField.HOUR, 24);// 签发时间payload.put(RegisteredPayload.ISSUED_AT, now);// 过期时间payload.put(RegisteredPayload.EXPIRES_AT, expTime);// 生效时间payload.put(RegisteredPayload.NOT_BEFORE, now);String token = JWTUtil.createToken(payload, KEY.getBytes());LOG.info("生成JWT token:{}", token);return token;}/*** 检验token是否有效** @param token* @return*/public static boolean validate(String token) {GlobalBouncyCastleProvider.setUseBouncyCastle(false);try {JWT jwt = JWTUtil.parseToken(token).setKey(KEY.getBytes());// validate包含了verifyboolean validate = jwt.validate(0);LOG.info("JWT token校验结果:{}", validate);return validate;} catch (Exception e) {log.info("检验token异常{}", e.getMessage());return false;}}/*** 获取payload里的内容** @param token* @return*/public static JSONObject getJSONObject(String token) {GlobalBouncyCastleProvider.setUseBouncyCastle(false);if (!validate(token)) {return new JSONObject();}JWT jwt = JWTUtil.parseToken(token).setKey(KEY.getBytes());JSONObject payloads = jwt.getPayloads();payloads.remove(RegisteredPayload.ISSUED_AT);payloads.remove(RegisteredPayload.EXPIRES_AT);payloads.remove(RegisteredPayload.NOT_BEFORE);LOG.info("根据token获取原始内容:{}", payloads);return payloads;}
这一步非常重要,否则部署项目会发生JCE cannot authenticate the provider BC
BouncyCastle类是一个加密的第三方类,关闭它使用jdk自带的加密算法
GlobalBouncyCastleProvider.setUseBouncyCastle(false);