From 45b60c0834c69c261806be16fe3157019b4df912 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Mon, 29 Jul 2024 14:31:00 +0800
Subject: [PATCH] 'commit'
---
.../i100c/charge/gw/filter/CorsFilter.java | 3 +-
.../gwopenapi/GwOpenAPIApplication.java | 5 --
.../gwopenapi/config/RedisCacheConfig.java | 60 ++++--------------
.../gwopenapi/filter/ZuulPreFilter.java | 33 +++++-----
.../com/charge/gwopenapi/utils/JwtUtil.java | 2 -
Ylt/ms-user/pom.xml | 2 +-
业务梳理/1.png | Bin 0 -> 137890 bytes
业务梳理/2.png | Bin 0 -> 64295 bytes
业务梳理/充电站上线业务流程.pos | 1 +
业务梳理/新建文本文档.txt | 1 +
10 files changed, 32 insertions(+), 75 deletions(-)
create mode 100644 业务梳理/1.png
create mode 100644 业务梳理/2.png
create mode 100644 业务梳理/充电站上线业务流程.pos
create mode 100644 业务梳理/新建文本文档.txt
diff --git a/Ylt/gw-charge/src/main/java/com/i100c/charge/gw/filter/CorsFilter.java b/Ylt/gw-charge/src/main/java/com/i100c/charge/gw/filter/CorsFilter.java
index 2c2a65f..62a395d 100644
--- a/Ylt/gw-charge/src/main/java/com/i100c/charge/gw/filter/CorsFilter.java
+++ b/Ylt/gw-charge/src/main/java/com/i100c/charge/gw/filter/CorsFilter.java
@@ -6,7 +6,8 @@ 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
diff --git a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/GwOpenAPIApplication.java b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/GwOpenAPIApplication.java
index f726f86..6f68018 100644
--- a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/GwOpenAPIApplication.java
+++ b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/GwOpenAPIApplication.java
@@ -11,16 +11,11 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableZuulProxy
public class GwOpenAPIApplication {
-
-
@RequestMapping("/")
public String index(){
return "Hello,gw-openapi";
}
-
public static void main(String[] args) {
SpringApplication.run(GwOpenAPIApplication.class, args);
}
-
-
}
diff --git a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/config/RedisCacheConfig.java b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/config/RedisCacheConfig.java
index 94dbe3e..810f589 100644
--- a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/config/RedisCacheConfig.java
+++ b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/config/RedisCacheConfig.java
@@ -20,80 +20,42 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
@EnableCaching //启用缓存,这个注解很重要;
public class RedisCacheConfig extends CachingConfigurerSupport {
-
-
-
-
/**
-
* 缓存管理器.
-
+ *
* @param redisTemplate
-
* @return
-
*/
-@Bean
-public CacheManager cacheManager(RedisTemplate,?> redisTemplate) {
-
+ @Bean
+ public CacheManager cacheManager(RedisTemplate, ?> redisTemplate) {
CacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
-}
-
-
-
+ }
/**
-
* redis模板操作类,类似于jdbcTemplate的一个类;
-
- *
-
+ *
* 虽然CacheManager也能获取到Cache对象,但是操作起来没有那么灵活;
-
- *
-
+ *
* 这里在扩展下:RedisTemplate这个类不见得很好操作,我们可以在进行扩展一个我们
-
- *
-
+ *
* 自己的缓存类,比如:RedisStorage类;
-
*
-
* @param factory : 通过Spring进行注入,参数在application.properties进行配置;
-
* @return
-
*/
-
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
-
- RedisTemplate redisTemplate = new RedisTemplate();
-
+ RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory);
-
//key序列化方式;(不然会出现乱码;),但是如果方法上有Long等非String类型的话,会报类型转换错误;
-
//所以在没有自己定义key生成策略的时候,以下这个代码建议不要这么写,可以不配置或者自己实现ObjectRedisSerializer
-
//或者JdkSerializationRedisSerializer序列化方式;
-
- RedisSerializer redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
-
- redisTemplate.setKeySerializer(redisSerializer);
-
- redisTemplate.setHashKeySerializer(redisSerializer);
-
-
-
+ RedisSerializer redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
+ redisTemplate.setKeySerializer(redisSerializer);
+ redisTemplate.setHashKeySerializer(redisSerializer);
return redisTemplate;
-
}
-
-
-
}
\ No newline at end of file
diff --git a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/filter/ZuulPreFilter.java b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/filter/ZuulPreFilter.java
index c1a2aa9..49161e6 100644
--- a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/filter/ZuulPreFilter.java
+++ b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/filter/ZuulPreFilter.java
@@ -26,16 +26,14 @@ import java.util.regex.Pattern;
@Component
-@ConfigurationProperties(prefix = "jwt.filter")
+@ConfigurationProperties(prefix = "jwt.filter") //should_not_filter是通过这句话注入读取进内存的
public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
-
@Value("${jwt.secret}")
private String secret;
-
- @Autowired
- private TokenService tokenService;
+ @Autowired
+ private TokenService tokenService;
List should_not_filter = new ArrayList<>();
@@ -60,6 +58,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
@PostConstruct
private void init() {
+ //这是贪吃蛇吗?自己吃自己?
ArrayList newList = new ArrayList<>();
for (String s : should_not_filter) {
newList.add(s.replaceAll("\\*\\*", "[^\\\\s]*"));
@@ -84,7 +83,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
String path = request.getRequestURI();
String contextPath = request.getContextPath();
String pathInfo = path.replaceFirst(contextPath, "");
-
+ //不过滤的跳过
boolean matches = false;
for (String s : should_not_filter) {
Pattern pattern = Pattern.compile(s);
@@ -92,6 +91,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
matches = matcher.matches();
if (matches) break;
}
+ //否则是需要过滤的
return !matches;
}
@@ -102,9 +102,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
//Map> requestQueryParams = ctx.getRequestQueryParams();
HttpServletRequest request = ctx.getRequest();
String Authorization = request.getHeader("Authorization");
- if (Authorization == null){
+ if (Authorization == null) {
try {
- BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
+ BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
@@ -114,10 +114,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
} catch (Exception e) {
e.printStackTrace();
}
-
}
- // String uri =ctx.getRequest().getRequestURI();
+ // String uri =ctx.getRequest().getRequestURI();
if (Authorization == null || Authorization.length() == 0) {
Response resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
@@ -131,14 +130,14 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
String token = Authorization.replaceFirst(JwtUtil.AUTHORIZATION_STARTER, "");
Claims cs = JwtUtil.getClaimsFromToken(token, secret);
- if(cs == null || cs.size() == 0) {
+ if (cs == null || cs.size() == 0) {
Response resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);
ctx.setResponseBody(json.toString());
ctx.getResponse().setContentType("text/json; charset=utf-8");
ctx.setResponseStatusCode(200);
- System.out.println("cs:"+Authorization);
+ System.out.println("cs:" + Authorization);
return ctx.getResponse();
}
@@ -155,8 +154,8 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
}
//验证数据是否过期
- String checkToken = tokenService.getToken(TokenService.ONLINE_OPERRATOR+operatorId);
- if(StringUtils.isEmpty(checkToken)){
+ String checkToken = tokenService.getToken(TokenService.ONLINE_OPERRATOR + operatorId);
+ if (StringUtils.isEmpty(checkToken)) {
Response resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);
@@ -164,9 +163,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
ctx.getResponse().setContentType("text/json; charset=utf-8");
ctx.setResponseStatusCode(200);
return ctx.getResponse();
- }else{ //保持token心跳
- if(checkToken.equals(token)){
- }else{
+ } else { //保持token心跳
+ if (checkToken.equals(token)) {
+ } else {
Response resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);
diff --git a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/utils/JwtUtil.java b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/utils/JwtUtil.java
index c33a6d0..549cfb7 100644
--- a/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/utils/JwtUtil.java
+++ b/Ylt/gw-openapi/src/main/java/com/charge/gwopenapi/utils/JwtUtil.java
@@ -85,6 +85,4 @@ public class JwtUtil {
}
return claims;
}
-
-
}
diff --git a/Ylt/ms-user/pom.xml b/Ylt/ms-user/pom.xml
index 3d95739..fea41d9 100644
--- a/Ylt/ms-user/pom.xml
+++ b/Ylt/ms-user/pom.xml
@@ -6,8 +6,8 @@
1.0.0
- 4.0.0
+ 4.0.0
ms-user
ms-user
1.0.0
diff --git a/业务梳理/1.png b/业务梳理/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..59cf829ea576c0ab9254c9eb41e569eafe5fc369
GIT binary patch
literal 137890
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