fanxw 2 vuotta sitten
vanhempi
commit
8b84da21d2
1 muutettua tiedostoa jossa 73 lisäystä ja 30 poistoa
  1. 73 30
      src/main/java/com/chinaitop/depot/storage/utils/CustomFilter.java

+ 73 - 30
src/main/java/com/chinaitop/depot/storage/utils/CustomFilter.java

@@ -1,15 +1,18 @@
1 1
 package com.chinaitop.depot.storage.utils;
2 2
 
3
-import org.apache.commons.lang.ObjectUtils;
4
-import org.apache.commons.lang3.StringUtils;
5
-
6
-import com.chinaitop.depot.storage.utils.DataPolicyEngine;
7
-import com.chinaitop.depot.storage.utils.ParameterRequestWrapper;
3
+import java.io.IOException;
8 4
 
9
-import javax.servlet.*;
5
+import javax.servlet.Filter;
6
+import javax.servlet.FilterChain;
7
+import javax.servlet.FilterConfig;
8
+import javax.servlet.ServletException;
9
+import javax.servlet.ServletRequest;
10
+import javax.servlet.ServletResponse;
10 11
 import javax.servlet.http.HttpServletRequest;
11 12
 import javax.servlet.http.HttpSession;
12
-import java.io.IOException;
13
+
14
+import org.apache.commons.lang.ObjectUtils;
15
+import org.apache.commons.lang3.StringUtils;
13 16
 
14 17
 public class CustomFilter implements Filter {
15 18
 
@@ -21,29 +24,46 @@ public class CustomFilter implements Filter {
21 24
 	@Override
22 25
 	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
23 26
 			throws IOException, ServletException {
24
-		ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper((HttpServletRequest) arg0);
25
-		HttpServletRequest request = (HttpServletRequest) arg0;
26
-		HttpSession session = request.getSession();
27
-		String orgId = "";
28
-		if (session != null){
29
-			orgId = ObjectUtils.toString(session.getAttribute("orgId"), "");
30
-		}
31
-		if (StringUtils.isNotBlank(orgId)) {
32
-			DataPolicyEngine.set(orgId);
33
-		}
34
-
35
-		if (StringUtils.isNotBlank(orgId)) {
36
-			// 将参数追加到request url 之后
37
-			requestWrapper.addParameter("orgId", orgId);
38
-			requestWrapper.addParameter("unitid", orgId);
39
-			requestWrapper.addParameter("unitId", orgId);
40
-			// 将参数追加到request 的body 中
41
-			requestWrapper.addParameterToBody("orgId", orgId);
42
-			requestWrapper.addParameterToBody("unitid", orgId);
43
-			requestWrapper.addParameterToBody("unitId", orgId);
44
-		}
45
-
46
-		arg2.doFilter(requestWrapper, arg1);
27
+
28
+		if (StringUtils.isBlank(arg0.getContentType()) || this.isJson(arg0)) {
29
+	    	ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper((HttpServletRequest) arg0);
30
+	    	HttpServletRequest request = (HttpServletRequest) arg0;
31
+	    	HttpSession session = request.getSession();
32
+	    	String orgId = "";
33
+	    	if (session != null){
34
+	    		orgId = ObjectUtils.toString(session.getAttribute("orgId"), "");
35
+	    	}
36
+	    	if (StringUtils.isNotBlank(orgId)) {
37
+	    		DataPolicyEngine.set(orgId);
38
+	    	}
39
+	    	
40
+	    	if (StringUtils.isNotBlank(orgId)) {
41
+	    		// 将参数追加到request url 之后
42
+	    		requestWrapper.addParameter("orgId", orgId);
43
+	    		requestWrapper.addParameter("unitid", orgId);
44
+	    		requestWrapper.addParameter("unitId", orgId);
45
+	    		// 将参数追加到request 的body 中
46
+	    		requestWrapper.addParameterToBody("orgId", orgId);
47
+	    		requestWrapper.addParameterToBody("unitid", orgId);
48
+	    		requestWrapper.addParameterToBody("unitId", orgId);
49
+	    	}
50
+	    	
51
+	    	arg2.doFilter(requestWrapper, arg1);
52
+//	    } else if (isMultipart(arg0)) {
53
+	    } else {
54
+	    	HttpServletRequest request = (HttpServletRequest) arg0;
55
+	    	HttpSession session = request.getSession();
56
+	    	String orgId = "";
57
+	    	if (session != null){
58
+	    		orgId = ObjectUtils.toString(session.getAttribute("orgId"), "");
59
+	    	}
60
+	    	if (StringUtils.isNotBlank(orgId)) {
61
+	    		DataPolicyEngine.set(orgId);
62
+	    	}
63
+
64
+	    	arg2.doFilter(arg0, arg1);
65
+	    }
66
+
47 67
 		DataPolicyEngine.remove();
48 68
 	}
49 69
 	
@@ -52,4 +72,27 @@ public class CustomFilter implements Filter {
52 72
  
53 73
     }
54 74
 
75
+	private boolean isJson(ServletRequest request) {
76
+		boolean flag = request.getContentType().toLowerCase().startsWith("application/");
77
+        if (flag) {
78
+            return true;
79
+        } else {
80
+            return false;
81
+        }
82
+    }
83
+
84
+	/**
85
+     * 判断本次请求的数据类型是否为上传文件
86
+     *
87
+     * @param request request
88
+     * @return boolean
89
+     */
90
+    private boolean isMultipart(ServletRequest request) {
91
+    	boolean flag = request.getContentType().toLowerCase().startsWith("multipart/");
92
+        if (request.getContentType() != null && flag) {
93
+            return true;
94
+        }
95
+
96
+        return false;
97
+   }
55 98
 }