From 7b6fd824f7a4e0f633ff59d0d92c8649334c546d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 6 Sep 2024 15:02:15 +0800 Subject: [PATCH] 'commit' --- .../main/java/com/dsideal/GwApplication.java | 5 +- .../com/dsideal/config/RedisCacheConfig.java | 2 - .../java/com/dsideal/filter/CorsFilter.java | 8 +- .../com/dsideal/filter/ZuulPreFilter.java | 14 +- .../java/com/dsideal/model/I100cResponse.java | 2 - .../main/java/com/dsideal/util/JwtUtil.java | 15 +- gw-exam/src/main/resources/bootstrap-dev.yml | 188 ------------------ ...ootstrap-pro-ylt.yml => bootstrap-pro.yml} | 11 - 8 files changed, 21 insertions(+), 224 deletions(-) rename gw-exam/src/main/resources/{bootstrap-pro-ylt.yml => bootstrap-pro.yml} (89%) diff --git a/gw-exam/src/main/java/com/dsideal/GwApplication.java b/gw-exam/src/main/java/com/dsideal/GwApplication.java index 496456a3..e102c888 100644 --- a/gw-exam/src/main/java/com/dsideal/GwApplication.java +++ b/gw-exam/src/main/java/com/dsideal/GwApplication.java @@ -15,15 +15,14 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController @EnableZuulProxy -// Zuul网关 @EnableZuulProxy 和 @EnableZuulServer 的区别 -// https://www.cnblogs.com/c2g5201314/p/12993753.html + public class GwApplication { @Autowired private Environment environment; @RequestMapping("/") public String index() { - return "当前配置文件环境为:" + environment.getActiveProfiles()[0] + ", Hello, gw-charge!!!"; + return "当前配置文件环境为:" + environment.getActiveProfiles()[0] + ", Hello, gw-exam!"; } public static void main(String[] args) { diff --git a/gw-exam/src/main/java/com/dsideal/config/RedisCacheConfig.java b/gw-exam/src/main/java/com/dsideal/config/RedisCacheConfig.java index 3ff10f25..880b04e7 100644 --- a/gw-exam/src/main/java/com/dsideal/config/RedisCacheConfig.java +++ b/gw-exam/src/main/java/com/dsideal/config/RedisCacheConfig.java @@ -14,8 +14,6 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration @EnableCaching //启用缓存,这个注解很重要; public class RedisCacheConfig extends CachingConfigurerSupport { - - /** * 缓存管理器. */ diff --git a/gw-exam/src/main/java/com/dsideal/filter/CorsFilter.java b/gw-exam/src/main/java/com/dsideal/filter/CorsFilter.java index 4f4acdb6..bc35154d 100644 --- a/gw-exam/src/main/java/com/dsideal/filter/CorsFilter.java +++ b/gw-exam/src/main/java/com/dsideal/filter/CorsFilter.java @@ -6,13 +6,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -//SpringBoot系列教程web篇之过滤器Filter使用指南 -//https://blog.csdn.net/cxyxysam/article/details/135483785 @WebFilter(urlPatterns = "/*") public class CorsFilter implements Filter { @Override - public void init(FilterConfig filterConfig) throws ServletException { - // TODO Auto-generated method stub + public void init(FilterConfig filterConfig) { } @Override @@ -20,8 +17,6 @@ public class CorsFilter implements Filter { FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; HttpServletRequest request = (HttpServletRequest) req; - String uri = request.getRequestURI(); - request.getServerName(); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); @@ -35,6 +30,5 @@ public class CorsFilter implements Filter { @Override public void destroy() { - // TODO Auto-generated method stub } } \ No newline at end of file diff --git a/gw-exam/src/main/java/com/dsideal/filter/ZuulPreFilter.java b/gw-exam/src/main/java/com/dsideal/filter/ZuulPreFilter.java index 289c2f64..f955b60a 100644 --- a/gw-exam/src/main/java/com/dsideal/filter/ZuulPreFilter.java +++ b/gw-exam/src/main/java/com/dsideal/filter/ZuulPreFilter.java @@ -32,7 +32,7 @@ public class ZuulPreFilter extends ZuulFilter { private static final Logger logger = LoggerFactory.getLogger(ZuulPreFilter.class); - + //jwt的密匙 @Value("${jwt.secret}") private String secret; @@ -42,8 +42,10 @@ public class ZuulPreFilter extends ZuulFilter { @Autowired private AsyncTask asyncTask; + //白名单 List should_not_filter = new ArrayList<>(); + //黑名单 List no_access_filter = new ArrayList<>(); public List getNo_access_filter() { @@ -58,7 +60,6 @@ public class ZuulPreFilter extends ZuulFilter { return should_not_filter; } - public void setShould_not_filter(List should_not_filter) { this.should_not_filter = should_not_filter; } @@ -111,7 +112,7 @@ public class ZuulPreFilter extends ZuulFilter { ctx.getResponse().setStatus(HttpServletResponse.SC_OK); return ctx.getResponse(); } - if (Authorization == null || Authorization.length() == 0) { + if (Authorization == null || Authorization.isEmpty()) { ctx.setSendZuulResponse(false); ctx.setResponseBody("{\"msg\":\"凭证过期\" ,\"code\":1002}"); ctx.getResponse().setContentType("text/json; charset=utf-8"); @@ -120,8 +121,6 @@ public class ZuulPreFilter extends ZuulFilter { } String token = Authorization.replaceFirst(JwtUtil.AUTHORIZATION_STARTER, ""); - - Claims cs; try { //JAVA加密的,我尝试解析一下 @@ -152,9 +151,8 @@ public class ZuulPreFilter extends ZuulFilter { String phone = (String) cs.get(JwtUtil.CLAIM_KEY_PHONE); String type = (String) cs.get(JwtUtil.CLAIM_KEY_TYPE); - //验证数据是否过期 - String tokenkey = ""; + String tokenkey; if (StringUtils.isEmpty(type)) { tokenkey = TokenService.ONLINE_USER + userId + phone; } else { @@ -170,7 +168,7 @@ public class ZuulPreFilter extends ZuulFilter { return ctx.getResponse(); } else { if (checkToken.equals(Authorization)) { - // tokenService.freshTime(TokenService.ONLINE_USER+userId); + tokenService.freshTime(TokenService.ONLINE_USER + userId); } else { ctx.setSendZuulResponse(false); ctx.setResponseBody("{\"msg\":\"凭证过期请重新登录\" ,\"code\":1002}"); diff --git a/gw-exam/src/main/java/com/dsideal/model/I100cResponse.java b/gw-exam/src/main/java/com/dsideal/model/I100cResponse.java index 4663694a..d8b2fbae 100644 --- a/gw-exam/src/main/java/com/dsideal/model/I100cResponse.java +++ b/gw-exam/src/main/java/com/dsideal/model/I100cResponse.java @@ -85,6 +85,4 @@ public class I100cResponse { res.setMsg(msg); return general(res); } - - } diff --git a/gw-exam/src/main/java/com/dsideal/util/JwtUtil.java b/gw-exam/src/main/java/com/dsideal/util/JwtUtil.java index 223ce08c..b3b4dd1a 100644 --- a/gw-exam/src/main/java/com/dsideal/util/JwtUtil.java +++ b/gw-exam/src/main/java/com/dsideal/util/JwtUtil.java @@ -4,6 +4,7 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -57,7 +58,7 @@ public class JwtUtil { return Jwts.builder() .setClaims(claims) // .setExpiration(date) - .signWith(SignatureAlgorithm.HS512, secret) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS256, secret) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); } @@ -68,7 +69,7 @@ public class JwtUtil { return Jwts.builder() .setClaims(claims) .setExpiration(date) - .signWith(SignatureAlgorithm.HS512, secret) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS256, secret) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); } public static Claims getClaimsFromToken(String token, String secret) { @@ -79,7 +80,15 @@ public class JwtUtil { .parseClaimsJws(token) .getBody(); } catch (Exception e) { - claims = null; + try { + //NODEJS加密的,我尝试解析一下 + claims = Jwts.parser() + .setSigningKey(secret.getBytes(StandardCharsets.UTF_8)) + .parseClaimsJws(token) + .getBody(); + } catch (Exception err) { + claims = null; + } } return claims; } diff --git a/gw-exam/src/main/resources/bootstrap-dev.yml b/gw-exam/src/main/resources/bootstrap-dev.yml index ecb35e42..365f4647 100644 --- a/gw-exam/src/main/resources/bootstrap-dev.yml +++ b/gw-exam/src/main/resources/bootstrap-dev.yml @@ -4,108 +4,10 @@ jwt: filter: should_not_filter: - /gw/login - - /userapi/getOpenId - - /userapi/weChatAuth - - /userapi/mobileLogin - - /userapi/sendMs - - /financeapi/wxSmallApp/wxSmallAppPayNotice - - /stationapi/station/queryNearbyStation - - /stationapi/station/queryNearbyStationMapMode - - /stationapi/station/queryYiXingWebsiteStationInfo - - /stationapi/station/identifyQR/PfV6GsETrX.txt - - /stationapi/station/PfV6GsETrX.txt - - /stationapi/station/queryStationList - - /stationapi/station/queryStationOperator - - /noticeapi/park/parkCoupon - - /userapi/getChewei - - /cheweiapi - - /financeapi/alipay/aliPayNotice - - /financeapi/alipay/aliPayNoticeFromSmallApp - - /financeapi/wxpay/wxAppPayNotice - - /financeapi/alipay/aliPayNoticeByCharge - - /userapi/wxLogin - - /userapi/forgetPW - - /userapi/loginByPW - - /userapi/getAccessToken - - /userapi/appWxLogin - - /userapi/getDictByKey - - /userapi/adPage/queryAdPage - - /userapi/appVersion/* - - /userapi/weChat/* - - /userapi/redPacket/getRedPacketDrawRecord - - /userapi/h5/* - - /userapi/groundLockStatus - - /userapi/getDictByKey - - /orderapi/inspectionReport/queryOrder - - /orderapi/inspectionReport/queryUserInfo - - /orderapi/inspectionReport/notificationShallowReport - - /orderapi/inspectionReport/notificationDeepReport - - /openapi/lock/queryConnectorId - - /openapi/lock/queryParkingLock - - /ZhuQue/* - - /userapi/userCard/searchCard - - /orderbkapi/station/querySaasStationIdsInfo - - /orderbkapi/station/querySaasConnectorIdsInfo - - /orderbkapi/saas/chargeorder/saasChargeOrderPageInfo - - /orderbkapi/station/querySaasEquipmentIdsInfo zuul: #路径配置 routes: - # 1、用户模块 - # UserInfoController - # @RequestMapping("/userapi/user") - userapi: - stripPrefix: false - path: /userapi/** # 所有匹配/usrerapi/**的路径将被路由到/userapi/** - # sensitiveHeaders是黑名单,且默认不为空。 因此,要使Zuul发送所有标头(忽略的标头除外),您必须将其明确设置为空列表。 如果要将cookie或授权标头传递到后端,则必须这样做。 - sensitiveHeaders: - #2、财务模块 - financeapi: - stripPrefix: true - path: /financeapi/** - sensitiveHeaders: - #3、充电站模块 - stationapi: - stripPrefix: true - path: /stationapi/** - sensitiveHeaders: - #4、订单模块 - orderapi: - stripPrefix: false - path: /orderapi/** - sensitiveHeaders: - #5、互联互通模块 - openapi: - stripPrefix: true - path: /openapi/** - sensitiveHeaders: - #6、订单后台模块 - orderbkapi: - stripPrefix: false - path: /orderbkapi/** - sensitiveHeaders: - #7、协议模块 【这个为什么没有路由地址指向呢?】 - protocolapi: - stripPrefix: false - path: /protocolapi/** - sensitiveHeaders: - #8、分发模块 - distribute: - stripPrefix: false - path: /distribute/** - sensitiveHeaders: - #9、通知模块 - noticeapi: - stripPrefix: false - path: /noticeapi/** - sensitiveHeaders: - #10、通知模块 - cheweiapi: - stripPrefix: false - path: /cheweiapi/** - sensitiveHeaders: - #11、黄海自己扩展的模块,后续所有的JAVA接口全部增加到这个路径下 ZhuQue: stripPrefix: false @@ -119,82 +21,6 @@ ZhuQue: listOfServers: http://zhu-que:9000 -# 用户模块 -userapi: - ribbon: - listOfServers: http://ms-user:7022 - -# 订单后台模块 -orderbkapi: - ribbon: - listOfServers: http://ms-admin:7011 - -#分发模块 -distribute: - ribbon: - listOfServers: http://ms-distribute:7012 - -# 财务模块 -financeapi: - ribbon: - listOfServers: http://ms-finance:7014 - -# 充电站模块 -stationapi: - ribbon: - listOfServers: http://ms-station:7020 - -# 协议模块 -protocolapi: - ribbon: - listOfServers: http://ms-protocol:7024 - -# 通知模块 -cheweiapi: - ribbon: - listOfServers: http://cz.api.cheweiguanjia.com - -# 互联互通模块 -openapi: - ribbon: - listOfServers: http://ms-openapi:7016 - -# 通知模块 -noticeapi: - ribbon: - listOfServers: http://i100c.3322.org:30745 - -# 订单模块 -orderapi: - ribbon: - listOfServers: http://ms-order:7017 - - -#protocolshenghongapi: -# ribbon: -# listOfServers: http://i100c.3322.org:31766 - -taskapi: - ribbon: - listOfServers: http://ms-task:7021 - -#walletapi: -# ribbon: -# listOfServers: http://i100c.3322.org:30723 - -#websocketocppapi: -# ribbon: -# listOfServers: http://i100c.3322.org:30725 - -#mgrapi: -# ribbon: -# listOfServers: http://ms-saas-mgr:7026 - -#excelapi: -# ribbon: -# listOfServers: http://i100c.3322.org:30326 - - ribbon: #负载均衡 eureka: enabled: false #禁用eureka,不依赖 eureka @@ -227,20 +53,6 @@ spring: max-idle: 8 min-idle: 0 - # Dinger(叮鸽),基于springboot实现的群机器人消息发送中间件入门使用 - # https://blog.51cto.com/u_15891990/5908802 - dinger: - project-id: ${spring.application.name}-${spring.profiles.active} - dingers: - # 使用钉钉机器人, 请根据自己机器人配置信息进行修改 - dingtalk: - # tokenId是创建机器人的webhook - tokenId: ad3700d79705ea1502e57c5fa170fda23d5c6502f3d0410a66dbc2a8e1d06986 - # secret是创建机器人的加签 - secret: SEC167efa8be3412d3b9dbf87286d9b837836aabd79cf20f9966001333a287a39a5 - - - diff --git a/gw-exam/src/main/resources/bootstrap-pro-ylt.yml b/gw-exam/src/main/resources/bootstrap-pro.yml similarity index 89% rename from gw-exam/src/main/resources/bootstrap-pro-ylt.yml rename to gw-exam/src/main/resources/bootstrap-pro.yml index 26123715..ea72a160 100644 --- a/gw-exam/src/main/resources/bootstrap-pro-ylt.yml +++ b/gw-exam/src/main/resources/bootstrap-pro.yml @@ -216,14 +216,3 @@ spring: max-active: 8 max-idle: 8 min-idle: 0 - dinger: - project-id: ${spring.application.name}-${spring.profiles.active} - dingers: - # 使用钉钉机器人, 请根据自己机器人配置信息进行修改 - dingtalk: - # tokenId是创建机器人的webhook - tokenId: 6c0cd9de94359329fe166dfefe39da0d8d3fba59211dfdc64d8aba1d1acd89fb - # secret是创建机器人的加签 - secret: SEC9e3b8638d5670215e966efc891be4c7d83c09dd8f032df7ca84972a2661effb7 - -