|
@@ -0,0 +1,32 @@
|
|
|
+package com.tzld.longarticle.recommend.server.web;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.filter.OncePerRequestFilter;
|
|
|
+
|
|
|
+import javax.servlet.FilterChain;
|
|
|
+import javax.servlet.ServletException;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class InternalApiFilter extends OncePerRequestFilter {
|
|
|
+ @Value("${server.management.port:8081}")
|
|
|
+ private Integer port;
|
|
|
+
|
|
|
+ private static final String INTERNAL_API_PATH = "/internal";
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void doFilterInternal(HttpServletRequest request,
|
|
|
+ HttpServletResponse response,
|
|
|
+ FilterChain filterChain) throws ServletException, IOException {
|
|
|
+ if (request.getServletPath().startsWith(INTERNAL_API_PATH)) {
|
|
|
+ if (request.getServerPort() != port) {
|
|
|
+ response.sendError(HttpServletResponse.SC_FORBIDDEN);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ filterChain.doFilter(request, response);
|
|
|
+ }
|
|
|
+}
|