Преглед изворни кода

添加到配置中心filter

my-csc-config-file.git пре 5 година
родитељ
комит
9dc9ef21ca

+ 49 - 0
src/main/java/com/unissoft/filter/CustomerRequestWrapper.java

@@ -0,0 +1,49 @@
1
+package com.unissoft.filter;
2
+
3
+import javax.servlet.ReadListener;
4
+import javax.servlet.ServletInputStream;
5
+import javax.servlet.http.HttpServletRequest;
6
+import javax.servlet.http.HttpServletRequestWrapper;
7
+import java.io.ByteArrayInputStream;
8
+import java.io.IOException;
9
+
10
+/**
11
+ * 文件描述
12
+ *
13
+ * @author tongxi.xia
14
+ * @date 2020年12月17日 19:07
15
+ */
16
+public class CustomerRequestWrapper extends HttpServletRequestWrapper {
17
+    public CustomerRequestWrapper(HttpServletRequest request) {
18
+        super(request);
19
+    }
20
+
21
+    @Override
22
+    public ServletInputStream getInputStream() throws IOException {
23
+
24
+        byte[] bytes = new byte[0];
25
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
26
+
27
+        return new ServletInputStream() {
28
+            @Override
29
+            public boolean isFinished() {
30
+                return byteArrayInputStream.read() == -1 ? true : false;
31
+            }
32
+
33
+            @Override
34
+            public boolean isReady() {
35
+                return false;
36
+            }
37
+
38
+            @Override
39
+            public void setReadListener(ReadListener readListener) {
40
+
41
+            }
42
+
43
+            @Override
44
+            public int read() throws IOException {
45
+                return byteArrayInputStream.read();
46
+            }
47
+        };
48
+    }
49
+}

+ 47 - 0
src/main/java/com/unissoft/filter/WebhooksFilter.java

@@ -0,0 +1,47 @@
1
+package com.unissoft.filter;
2
+
3
+import org.springframework.stereotype.Component;
4
+
5
+import javax.servlet.*;
6
+import javax.servlet.http.HttpServletRequest;
7
+import javax.servlet.http.HttpServletResponse;
8
+import java.io.IOException;
9
+
10
+/**
11
+ * 文件描述
12
+ *
13
+ * @author tongxi.xia
14
+ * @date 2020年12月17日 19:06
15
+ */
16
+@Component
17
+public class WebhooksFilter implements Filter {
18
+
19
+    @Override
20
+    public void init(FilterConfig filterConfig) throws ServletException {
21
+
22
+    }
23
+
24
+    @Override
25
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
26
+        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
27
+        HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
28
+
29
+        String url = new String(httpServletRequest.getRequestURI());
30
+
31
+        //只过滤/actuator/bus-refresh
32
+        if (!url.endsWith("/actuator/bus-refresh")) {
33
+            filterChain.doFilter(servletRequest, httpServletResponse);
34
+            return;
35
+        }
36
+
37
+        //使用HttpServletRequest包装原始请求达到修改post请求中body内容的目的
38
+        CustomerRequestWrapper requestWrapper = new CustomerRequestWrapper(httpServletRequest);
39
+
40
+        filterChain.doFilter(requestWrapper, servletResponse);
41
+    }
42
+
43
+    @Override
44
+    public void destroy() {
45
+
46
+    }
47
+}