From b2f14871654412ffadb113f5c6170ba91290781f Mon Sep 17 00:00:00 2001 From: fuzi1996 Date: Fri, 15 Apr 2022 21:59:24 +0800 Subject: [PATCH 1/2] fix:issues/I51LOI --- .../dbapi/apiserver/DBApiApiServer.java | 14 +++++ .../dbapi/basic/filter/HeaderFilter.java | 53 +++++++++++++++++++ .../freakchicken/dbapi/DBApiStandalone.java | 2 + 3 files changed, 69 insertions(+) create mode 100644 dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java index 94f705b..ea87a46 100644 --- a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java @@ -1,6 +1,7 @@ package com.gitee.freakchicken.dbapi.apiserver; import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; +import com.gitee.freakchicken.dbapi.basic.filter.HeaderFilter; import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; @@ -38,6 +39,8 @@ public class DBApiApiServer { APIServlet APIServlet; @Autowired ApiAuthFilter apiAuthFilter; + @Autowired + private HeaderFilter headerFilter; @Value("${dbapi.api.context}") String apiContext; @@ -49,6 +52,17 @@ public class DBApiApiServer { return bean; } + @Bean + public FilterRegistrationBean registHeaderFilter() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(headerFilter); + registrationBean.addUrlPatterns(String.format("/%s/*", apiContext)); + // headerFilter一定要在最前面 + registrationBean.setOrder(1); + registrationBean.setEnabled(true); + return registrationBean; + } + @Bean public FilterRegistrationBean authFilter() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java new file mode 100644 index 0000000..5d114f0 --- /dev/null +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java @@ -0,0 +1,53 @@ +package com.gitee.freakchicken.dbapi.basic.filter; + +import com.alibaba.fastjson.JSON; +import com.gitee.freakchicken.dbapi.basic.domain.Token; +import com.gitee.freakchicken.dbapi.basic.service.ApiConfigService; +import com.gitee.freakchicken.dbapi.basic.service.TokenService; +import com.gitee.freakchicken.dbapi.common.ApiConfig; +import com.gitee.freakchicken.dbapi.common.ResponseDto; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +@Slf4j +@Component +public class HeaderFilter implements Filter { + + public HeaderFilter(){ + System.out.println("HeaderFilter init"); + } + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + log.debug("HeaderFilter filter execute"); + HttpServletResponse response = (HttpServletResponse) servletResponse; + + response.setCharacterEncoding("UTF-8"); + String contentType = response.getContentType(); + System.out.println("1: "+contentType); + response.setContentType("application/json; charset=utf-8"); + contentType = response.getContentType(); + System.out.println("2: "+contentType); + filterChain.doFilter(servletRequest, servletResponse); + } + + @Override + public void destroy() { + + } +} \ No newline at end of file diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java index 323d384..2bff0a0 100644 --- a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java @@ -2,6 +2,7 @@ package com.gitee.freakchicken.dbapi; import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; import com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter; +import com.gitee.freakchicken.dbapi.basic.filter.HeaderFilter; import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; @@ -67,4 +68,5 @@ public class DBApiStandalone { registrationBean.setEnabled(true); return registrationBean; } + } -- Gitee From 8baa5a47c7364226d0770aab5c059876aa6c00ca Mon Sep 17 00:00:00 2001 From: fuzi1996 Date: Sat, 16 Apr 2022 14:25:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?bug:issues/I51LOI,=E8=B0=83=E6=95=B4filter?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dbapi/apiserver/DBApiApiServer.java | 41 +---------- .../dbapi/apiserver/conf/FilterConfig.java | 54 ++++++++++++++ .../dbapi/apiserver/conf/ServletConfig.java | 35 ++++++++++ .../dbapi/basic/filter/ApiAuthFilter.java | 27 ++++--- ...HeaderFilter.java => ApiHeaderFilter.java} | 19 +++-- .../dbapi/basic/filter/ApiIPFilter.java | 16 ++--- .../dbapi/basic/servlet/APIServlet.java | 1 - .../freakchicken/dbapi/DBApiStandalone.java | 44 +----------- .../freakchicken/dbapi/conf/FilterConfig.java | 70 +++++++++++++++++++ .../dbapi/conf/ServletConfig.java | 34 +++++++++ 10 files changed, 221 insertions(+), 120 deletions(-) create mode 100644 dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java create mode 100644 dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java rename dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/{HeaderFilter.java => ApiHeaderFilter.java} (73%) create mode 100644 dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java create mode 100644 dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java index ea87a46..3875bb0 100644 --- a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/DBApiApiServer.java @@ -1,7 +1,7 @@ package com.gitee.freakchicken.dbapi.apiserver; import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; -import com.gitee.freakchicken.dbapi.basic.filter.HeaderFilter; +import com.gitee.freakchicken.dbapi.basic.filter.ApiHeaderFilter; import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; @@ -34,43 +34,4 @@ public class DBApiApiServer { System.setProperty("spring.profiles.active", "apiServer"); SpringApplication.run(DBApiApiServer.class, args); } - - @Autowired - APIServlet APIServlet; - @Autowired - ApiAuthFilter apiAuthFilter; - @Autowired - private HeaderFilter headerFilter; - - @Value("${dbapi.api.context}") - String apiContext; - - @Bean - public ServletRegistrationBean clusterApiServlet() { - ServletRegistrationBean bean = new ServletRegistrationBean(APIServlet); - bean.addUrlMappings(String.format("/%s/*", apiContext)); - return bean; - } - - @Bean - public FilterRegistrationBean registHeaderFilter() { - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(headerFilter); - registrationBean.addUrlPatterns(String.format("/%s/*", apiContext)); - // headerFilter一定要在最前面 - registrationBean.setOrder(1); - registrationBean.setEnabled(true); - return registrationBean; - } - - @Bean - public FilterRegistrationBean authFilter() { - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(apiAuthFilter); - registrationBean.addUrlPatterns(String.format("/%s/*", apiContext)); - registrationBean.setOrder(2); - registrationBean.setEnabled(true); - return registrationBean; - } - } diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java new file mode 100644 index 0000000..dfa6979 --- /dev/null +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/FilterConfig.java @@ -0,0 +1,54 @@ +package com.gitee.freakchicken.dbapi.apiserver.conf; + +import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; +import com.gitee.freakchicken.dbapi.basic.filter.ApiHeaderFilter; +import com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @description: 用于注册Filter + * @program: dbApi + * @author: kensan + * @create: 2022-04-16 12:43 + */ +@Slf4j +@Configuration +public class FilterConfig { + @Value("${dbapi.api.context}") + String apiContext; + + @Autowired + private ApiAuthFilter apiAuthFilter; + + @Bean + public FilterRegistrationBean apiHeaderFilter() { + // issues/I51LOI + int apiHeaderFilterOrder = 1; + String format = String.format("/%s/*", apiContext); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(new ApiHeaderFilter()); + registrationBean.addUrlPatterns(format); + registrationBean.setOrder(apiHeaderFilterOrder); + registrationBean.setEnabled(true); + log.info("regist apiHeaderFilter for {} UrlPatterns, and order is {}",format,apiHeaderFilterOrder); + return registrationBean; + } + + @Bean + public FilterRegistrationBean authFilter() { + int authFilterOrder = 2; + String format = String.format("/%s/*", apiContext); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(apiAuthFilter); + registrationBean.addUrlPatterns(format); + registrationBean.setOrder(authFilterOrder); + registrationBean.setEnabled(true); + log.info("regist authFilter for {} UrlPatterns, and order is {}",format,authFilterOrder); + return registrationBean; + } +} diff --git a/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java new file mode 100644 index 0000000..feec8ec --- /dev/null +++ b/dbapi-cluster-apiServer/src/main/java/com/gitee/freakchicken/dbapi/apiserver/conf/ServletConfig.java @@ -0,0 +1,35 @@ +package com.gitee.freakchicken.dbapi.apiserver.conf; + +import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @description: + * @program: dbApi + * @author: kensan + * @create: 2022-04-16 12:45 + */ +@Slf4j +@Configuration +public class ServletConfig { + @Value("${dbapi.api.context}") + String apiContext; + + @Autowired + private APIServlet apiServlet; + + @Bean + public ServletRegistrationBean getServletRegistrationBean() { + String format = String.format("/%s/*", apiContext); + ServletRegistrationBean bean = new ServletRegistrationBean(apiServlet); + bean.addUrlMappings(format); + log.info("regist APIServlet servelet for {} urlMappings",format); + return bean; + } +} diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java index 39ff265..fa5df6a 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiAuthFilter.java @@ -24,14 +24,13 @@ import java.util.List; public class ApiAuthFilter implements Filter { @Autowired - ApiConfigService apiConfigService; + private ApiConfigService apiConfigService; @Autowired - TokenService tokenService; - + private TokenService tokenService; @Value("${dbapi.api.context}") - String apiContext; + private String apiContext; @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -47,14 +46,13 @@ public class ApiAuthFilter implements Filter { String servletPath = request.getRequestURI(); servletPath = servletPath.substring(apiContext.length() + 2); - PrintWriter out = null; + // 不使用writer的时候不要提前获取response的writer,否则无法在后续filter中设置编码 try { - out = response.getWriter(); // 校验接口是否存在 ApiConfig config = apiConfigService.getConfig(servletPath); if (config == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); - out.append(JSON.toJSONString(ResponseDto.fail("Api not exists"))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail("Api not exists"))); return; } // 如果是私有接口,校验权限 @@ -63,18 +61,18 @@ public class ApiAuthFilter implements Filter { // log.debug(tokenStr); if (StringUtils.isBlank(tokenStr)) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - out.append(JSON.toJSONString(ResponseDto.fail("No Token!"))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail("No Token!"))); return; } else { Token token = tokenService.getToken(tokenStr); if (token == null) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - out.append(JSON.toJSONString(ResponseDto.fail("Invalid Token!"))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail("Invalid Token!"))); return; } else { if (token.getExpire() != null && token.getExpire() < System.currentTimeMillis()) { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - out.append(JSON.toJSONString(ResponseDto.fail("Token Expired!"))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail("Token Expired!"))); return; } else { // log.info("token存在且有效"); @@ -83,7 +81,7 @@ public class ApiAuthFilter implements Filter { } else { response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - out.append(JSON.toJSONString(ResponseDto.fail("Invalid Token!"))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail("Invalid Token!"))); return; } } @@ -96,12 +94,13 @@ public class ApiAuthFilter implements Filter { } catch (Exception e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - out.append(JSON.toJSONString(ResponseDto.fail(e.toString()))); + response.getWriter().append(JSON.toJSONString(ResponseDto.fail(e.toString()))); log.error(e.toString()); } finally { - if (out != null) - out.close(); + if (response.getWriter() != null) { + response.getWriter().close(); + } } } diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java similarity index 73% rename from dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java rename to dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java index 5d114f0..8409222 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/HeaderFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiHeaderFilter.java @@ -20,12 +20,7 @@ import java.io.PrintWriter; import java.util.List; @Slf4j -@Component -public class HeaderFilter implements Filter { - - public HeaderFilter(){ - System.out.println("HeaderFilter init"); - } +public class ApiHeaderFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -34,15 +29,17 @@ public class HeaderFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - log.debug("HeaderFilter filter execute"); + log.debug("ApiHeaderFilter filter execute"); HttpServletResponse response = (HttpServletResponse) servletResponse; response.setCharacterEncoding("UTF-8"); - String contentType = response.getContentType(); - System.out.println("1: "+contentType); response.setContentType("application/json; charset=utf-8"); - contentType = response.getContentType(); - System.out.println("2: "+contentType); + // 跨域设置 + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*");//这里很重要,要不然js header不能跨域携带 Authorization属性 + response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); + filterChain.doFilter(servletRequest, servletResponse); } diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java index 067a800..0d8bc59 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/filter/ApiIPFilter.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import com.gitee.freakchicken.dbapi.basic.service.IPService; import com.gitee.freakchicken.dbapi.basic.util.IPUtil; import com.gitee.freakchicken.dbapi.common.ResponseDto; +import lombok.AllArgsConstructor; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +21,7 @@ import java.io.PrintWriter; public class ApiIPFilter implements Filter { @Autowired - IPService ipService; + private IPService ipService; @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -35,15 +37,6 @@ public class ApiIPFilter implements Filter { String originIp = IPUtil.getOriginIp(request); String method = request.getMethod(); - - response.setCharacterEncoding("UTF-8"); - response.setContentType("application/json; charset=utf-8"); - // 跨域设置 - response.setHeader("Access-Control-Allow-Origin", "*"); - response.setHeader("Access-Control-Allow-Credentials", "true"); - response.setHeader("Access-Control-Allow-Headers", "*");//这里很重要,要不然js header不能跨域携带 Authorization属性 - response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); - PrintWriter out = null; try { @@ -68,8 +61,9 @@ public class ApiIPFilter implements Filter { log.error(e.toString()); } finally { - if (out != null) + if (out != null) { out.close(); + } } } diff --git a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java index bf05e4b..4bcd323 100644 --- a/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java +++ b/dbapi-service/src/main/java/com/gitee/freakchicken/dbapi/basic/servlet/APIServlet.java @@ -56,7 +56,6 @@ public class APIServlet extends HttpServlet { @Autowired MailService mailService; - @Value("${dbapi.api.context}") String apiContext; diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java index 2bff0a0..3530bd9 100644 --- a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/DBApiStandalone.java @@ -2,7 +2,6 @@ package com.gitee.freakchicken.dbapi; import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; import com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter; -import com.gitee.freakchicken.dbapi.basic.filter.HeaderFilter; import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +19,7 @@ import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @MapperScan("com.gitee.freakchicken.dbapi.basic.dao") @EnableCaching -@ComponentScan(value = "com.gitee.freakchicken.dbapi.basic") +@ComponentScan(value = {"com.gitee.freakchicken.dbapi.basic","com.gitee.freakchicken.dbapi.conf"}) @EnableAsync //@PropertySource("application-standalone.properties") public class DBApiStandalone { @@ -28,45 +27,4 @@ public class DBApiStandalone { System.setProperty("spring.profiles.active","standalone"); SpringApplication.run(DBApiStandalone.class, args); } - - @Value("${dbapi.api.context}") - String apiContext; - - @Autowired - APIServlet APIServlet; - - //filter 会自动全局注册 - @Autowired - ApiIPFilter apiIPFilter; - - @Autowired - ApiAuthFilter apiAuthFilter; - - @Bean - public ServletRegistrationBean getServletRegistrationBean() { - ServletRegistrationBean bean = new ServletRegistrationBean(APIServlet); - bean.addUrlMappings(String.format("/%s/*", apiContext)); - return bean; - } - - @Bean - public FilterRegistrationBean IPFilter() { - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(apiIPFilter); - registrationBean.addUrlPatterns(String.format("/%s/*", apiContext)); - registrationBean.setOrder(1); - registrationBean.setEnabled(true); - return registrationBean; - } - - @Bean - public FilterRegistrationBean authFilter() { - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(apiAuthFilter); - registrationBean.addUrlPatterns(String.format("/%s/*", apiContext)); - registrationBean.setOrder(2); - registrationBean.setEnabled(true); - return registrationBean; - } - } diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java new file mode 100644 index 0000000..93b23fa --- /dev/null +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/FilterConfig.java @@ -0,0 +1,70 @@ +package com.gitee.freakchicken.dbapi.conf; + +import com.gitee.freakchicken.dbapi.basic.filter.ApiAuthFilter; +import com.gitee.freakchicken.dbapi.basic.filter.ApiHeaderFilter; +import com.gitee.freakchicken.dbapi.basic.filter.ApiIPFilter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @description: 用于注册Filter + * @program: dbApi + * @author: kensan + * @create: 2022-04-16 12:43 + */ +@Slf4j +@Configuration +public class FilterConfig { + @Value("${dbapi.api.context}") + private String apiContext; + + @Autowired + private ApiIPFilter apiIPFilter; + + @Autowired + private ApiAuthFilter apiAuthFilter; + + @Bean + public FilterRegistrationBean apiHeaderFilter() { + // issues/I51LOI + int apiHeaderFilterOrder = 1; + String format = String.format("/%s/*", apiContext); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(new ApiHeaderFilter()); + registrationBean.addUrlPatterns(format); + registrationBean.setOrder(apiHeaderFilterOrder); + registrationBean.setEnabled(true); + log.info("regist apiHeaderFilter for {} UrlPatterns, and order is {}",format,apiHeaderFilterOrder); + return registrationBean; + } + + @Bean + public FilterRegistrationBean ipFilter() { + int ipfilterOrder = 2; + String format = String.format("/%s/*", apiContext); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(apiIPFilter); + registrationBean.addUrlPatterns(format); + registrationBean.setOrder(ipfilterOrder); + registrationBean.setEnabled(true); + log.info("regist ipFilter for {} UrlPatterns, and order is {}",format,ipfilterOrder); + return registrationBean; + } + + @Bean + public FilterRegistrationBean authFilter() { + int authFilterOrder = 3; + String format = String.format("/%s/*", apiContext); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(apiAuthFilter); + registrationBean.addUrlPatterns(format); + registrationBean.setOrder(authFilterOrder); + registrationBean.setEnabled(true); + log.info("regist authFilter for {} UrlPatterns, and order is {}",format,authFilterOrder); + return registrationBean; + } +} diff --git a/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java new file mode 100644 index 0000000..208074f --- /dev/null +++ b/dbapi-standalone/src/main/java/com/gitee/freakchicken/dbapi/conf/ServletConfig.java @@ -0,0 +1,34 @@ +package com.gitee.freakchicken.dbapi.conf; + +import com.gitee.freakchicken.dbapi.basic.servlet.APIServlet; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @description: + * @program: dbApi + * @author: kensan + * @create: 2022-04-16 12:45 + */ +@Slf4j +@Configuration +public class ServletConfig { + @Value("${dbapi.api.context}") + private String apiContext; + + @Autowired + private APIServlet apiServlet; + + @Bean + public ServletRegistrationBean getServletRegistrationBean() { + String format = String.format("/%s/*", apiContext); + ServletRegistrationBean bean = new ServletRegistrationBean(apiServlet); + bean.addUrlMappings(format); + log.info("regist APIServlet servelet for {} urlMappings",format); + return bean; + } +} -- Gitee