فهرست منبع

fix: 修复无法获取真实IP

Closes B0061440
huangzqa 4 سال پیش
والد
کامیت
440579cb3c
1فایلهای تغییر یافته به همراه47 افزوده شده و 0 حذف شده
  1. 47 0
      src/main/java/com/dragonsoft/dcuc/approvegateway/filter/ForwardForFilter.java

+ 47 - 0
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/ForwardForFilter.java

@@ -0,0 +1,47 @@
+package com.dragonsoft.dcuc.approvegateway.filter;
+
+import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
+import com.netflix.zuul.exception.ZuulException;
+import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * <p>
+ * 获取请求者真实IP
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2021/6/29
+ */
+@Component
+public class ForwardForFilter extends ZuulFilter {
+    @Override
+    public String filterType() {
+        return FilterConstants.PRE_TYPE;
+    }
+
+    @Override
+    public int filterOrder() {
+        return 0;
+    }
+
+    @Override
+    public boolean shouldFilter() {
+        return true;
+    }
+
+    @Override
+    public Object run() throws ZuulException {
+        RequestContext currentContext = RequestContext.getCurrentContext();
+        HttpServletRequest request = currentContext.getRequest();
+        String realIpAdrress = IpUtils.getRealIpAdrress(request);
+        Map<String, String> zuulRequestHeaders = currentContext.getZuulRequestHeaders();
+        zuulRequestHeaders.put("HTTP_X_FORWARDED_FOR", realIpAdrress);
+        return null;
+    }
+}