Kaynağa Gözat

透传header

lirong 2 yıl önce
ebeveyn
işleme
6167d12e8d

+ 5 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RedirectApi.java

@@ -7,20 +7,21 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 @RestController
 public class RedirectApi {
 
 	@PostMapping(path = { "/redirect", "/zkt-sdk/redirect" }, produces = "application/json;charset=UTF-8")
-	public String redirect(@RequestBody String param) {
-		String result = RedirectUtil.redirect(param, false);
+	public String redirect(@RequestBody String param, HttpServletRequest request) {
+		String result = RedirectUtil.redirect(param, false,request);
 		return result;
 	}
 
 	@PostMapping(path = { "/redirect_wrapper", "/zkt-sdk/redirect_wrapper" }, produces = "application/json;charset=UTF-8")
-	public String redirect_wrapper(@RequestBody String param) {
-		String result = RedirectUtil.redirect(param, true);
+	public String redirect_wrapper(@RequestBody String param, HttpServletRequest request) {
+		String result = RedirectUtil.redirect(param, true,request);
 		return result;
 	}
 

+ 6 - 5
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RedirectUtil.java

@@ -15,11 +15,12 @@ import com.persagy.ibms.data.sdk.util.HttpClientUtil;
 
 import lombok.extern.slf4j.Slf4j;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 @Slf4j
 public class RedirectUtil {
-    public static String redirect(String param, boolean wrapper) {
+    public static String redirect(String param, boolean wrapper, HttpServletRequest request) {
         JSONObject sql_json = JSON.parseObject(param);
         String code = sql_json.getString("code");
         ConfigRedirect ConfigRedirect = Constant.ConfigRedirectMap.get(code);
@@ -33,7 +34,7 @@ public class RedirectUtil {
         String resultString;
         try {
             Map<String, String> otherMap = new ConcurrentHashMap<String, String>();
-            Object result = RedirectUtil.redirectInner(ConfigRedirect, sql_json, otherMap);
+            Object result = RedirectUtil.redirectInner(ConfigRedirect, sql_json, otherMap,request);
             if (wrapper) {
                 JSONObject resultJSON = new JSONObject();
                 resultJSON.put("Result", "success");
@@ -63,7 +64,7 @@ public class RedirectUtil {
         return resultString;
     }
 
-    public static Object redirectInner(ConfigRedirect ConfigRedirect, JSONObject sql_json, Map<String, String> otherMap) throws Exception {
+    public static Object redirectInner(ConfigRedirect ConfigRedirect, JSONObject sql_json, Map<String, String> otherMap,HttpServletRequest request) throws Exception {
         String resultString;
         String url = ConfigRedirect.url;
         String url_ori = url;
@@ -105,10 +106,10 @@ public class RedirectUtil {
             }
             //这里添加日志,重试手动,并设置成短链接
             try {
-                resultString = HttpClientUtil.instance("redirect").post(url, postString, null, ConfigRedirect.headerMap);
+                resultString = HttpClientUtil.instance("redirect").post(url, postString, null, ConfigRedirect.headerMap,null,request);
             } catch (Exception e) {
                 log.error("redirect异常", e);
-                resultString = HttpClientUtil.instance("redirect").post(url, postString, null, ConfigRedirect.headerMap);
+                resultString = HttpClientUtil.instance("redirect").post(url, postString, null, ConfigRedirect.headerMap,null,request);
             }
         }
         Object result;

+ 5 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java

@@ -1,6 +1,7 @@
 package com.persagy.ibms.data.sdk.service.rest;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -71,7 +72,7 @@ public class RestApi {
 
 	@PostMapping(path = { "/control", "/zkt-sdk/control" }, produces = "application/json;charset=UTF-8")
 	public String control(@RequestBody String param, HttpServletRequest request) {
-		String result = RestUtil.control(param);
+		String result = RestUtil.control(param,request);
 		return result;
 	}
 
@@ -89,7 +90,7 @@ public class RestApi {
 
 	@PostMapping(path = { "/subsystem_connect_status", "/zkt-sdk/subsystem_connect_status" }, produces = "application/json;charset=UTF-8")
 	public String subsystem_connect_status(@RequestBody String param,HttpServletRequest request) {
-		String result = RestUtil.subsystem_connect_status(param);
+		String result = RestUtil.subsystem_connect_status(param,request);
 		return result;
 	}
 
@@ -134,8 +135,8 @@ public class RestApi {
 
 	// 登录
 	@PostMapping(path = { "/login", "/zkt-sdk/login" }, produces = "application/json;charset=UTF-8")
-	public String login(@RequestBody String param, HttpServletRequest request) {
-		String result = RestUtil.login(param);
+	public String login(@RequestBody String param, HttpServletRequest request, HttpServletResponse response) {
+		String result = RestUtil.login(param,response);
 		return result;
 	}
 }

+ 12 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -9,6 +9,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import antlr.collections.impl.LList;
 import cn.hutool.core.lang.Tuple;
@@ -162,7 +163,7 @@ public class RestUtil {
 		}
 	}
 
-	public static String control(String param) {
+	public static String control(String param,HttpServletRequest request) {
 		RepositoryImpl Repository = RepositoryContainer.instance;
 		JSONObject result = new JSONObject();
 		try {
@@ -197,7 +198,7 @@ public class RestUtil {
 				}
 			}
 
-			JSONArray points = ControlUtil.set(userId, userName, Repository, path, infoValueSet,controlReason);
+			JSONArray points = ControlUtil.set(userId, userName, Repository, path, infoValueSet,controlReason,request);
 			JSONArray success_points = new JSONArray();
 			JSONArray failure_points = new JSONArray();
 			for (int i = 0; i < points.size(); i++) {
@@ -251,7 +252,8 @@ public class RestUtil {
 		return JSONObject.toJSONString(result, SerializerFeature.WriteMapNullValue);
 	}
 
-	public static String subsystem_connect_status(String param) {
+	public static String subsystem_connect_status(String param,HttpServletRequest request) {
+		String authorization=request.getHeader("Authorization");
 		JSONObject paramObject = JSON.parseObject(param);
 		String userId = (String) paramObject.get("userId");
 		String userName = (String) paramObject.get("userName");
@@ -312,6 +314,10 @@ public class RestUtil {
 		if (userName != null) {
 			postParam.put("userName", userName);
 		}
+		if(authorization!=null)
+		{
+			postParam.put("token", authorization);
+		}
 		postParam.put("module", "shop");
 		postParam.put("systemType", "connectionstatus");
 		postParam.put("details", sb.toString());
@@ -455,7 +461,7 @@ public class RestUtil {
 			// http://39.102.40.239:28888/labsl/graph/pub/query
 			// String post_url ="http://39.102.40.239:28888"+ "/labsl/graph/pub/query";
 			String post_url = Constant.adm_project_url + "/labsl/graph/pub/query";
-			String post_result = HttpClientUtil.instance("adm").post(post_url, postJSON.toJSONString(), null, head);
+			String post_result = HttpClientUtil.instance("adm").post(post_url, postJSON.toJSONString(), null, head,null,null);
 			// 4.解析返回结果
 			JSONObject resultJSON = JSON.parseObject(post_result);
 			Map<String, String> map = new ConcurrentHashMap<>();
@@ -542,11 +548,11 @@ public class RestUtil {
 	}
 
 	// 登录
-	public static String login(String param) {
+	public static String login(String param, HttpServletResponse response) {
 		JSONObject result = new JSONObject();
 		try {
 			JSONObject queryCriteria = JSON.parseObject(param);
-			String post_result = PersonUtil.Login(queryCriteria);
+			String post_result = PersonUtil.Login(queryCriteria,response);
 			String respMsg=JSON.parseObject(post_result).getString("respMsg");
 			JSONObject resultJSON = JSON.parseObject(post_result).getJSONObject("content");
 			result.put("Content", resultJSON);

+ 10 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java

@@ -15,6 +15,8 @@ import com.persagy.ibms.core.util.ComputeUtil;
 
 import lombok.extern.slf4j.Slf4j;
 
+import javax.servlet.http.HttpServletRequest;
+
 @Slf4j
 public class ControlUtil {
     public static void setControlValue(SceneDataObject object, JSONObject infoValueSet) {
@@ -81,7 +83,7 @@ public class ControlUtil {
     }
 
     public static JSONArray set(String userId, String userName, RepositoryImpl Repository, JSONArray path, JSONObject infoValueSet,
-                                String controlReason) throws Exception {
+                                String controlReason,HttpServletRequest request) throws Exception {
         JSONArray result;
         Object valueObject = ComputeUtil.getValueObject(Repository, path);
         List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
@@ -100,7 +102,7 @@ public class ControlUtil {
             result = set(Repository, currData, infoValueSet, sdoList);
         }
 
-        ControlUtil.saveBatchOperationLog(userId, userName, sdoList, infoValueSet, result, controlReason, Repository);
+        ControlUtil.saveBatchOperationLog(userId, userName, sdoList, infoValueSet, result, controlReason, Repository, request);
         // ControlUtil.saveOperationLog(userId, userName, sdoList, infoValueSet, result);
 
         return result;
@@ -187,8 +189,9 @@ public class ControlUtil {
     }
 
     public static void saveBatchOperationLog(String userId, String userName, List<SceneDataObject> sdoList, JSONObject infoValueSet, JSONArray points,
-                                             String controlReason, RepositoryImpl Repository) {
+                                             String controlReason, RepositoryImpl Repository, HttpServletRequest request) {
         try {
+            String authorization=request.getHeader("Authorization");
             JSONArray postParamArray = new JSONArray();
             for (int i = 0; i < sdoList.size(); i++) {
                 JSONObject postParam;
@@ -202,6 +205,10 @@ public class ControlUtil {
                 if (userName != null) {
                     postParam.put("userName", userName);
                 }
+                if(authorization!=null)
+                {
+                    postParam.put("token", authorization);
+                }
                 SceneDataObject sdo = sdoList.get(i);
                 Object ibmsxianshimingcheng = sdo.get("ibmsxianshimingcheng").value_prim.value;
                 Object ibmsxianshibianma = sdo.get("ibmsxianshibianma").value_prim.value;

+ 25 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/HttpClientUtil.java

@@ -8,6 +8,7 @@ import java.util.Date;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpVersion;
@@ -23,7 +24,7 @@ import org.apache.http.util.EntityUtils;
 
 import cn.hutool.core.lang.Tuple;
 import sun.misc.BASE64Encoder;
-
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 
@@ -141,16 +142,32 @@ public class HttpClientUtil {
 	}
 
 	public synchronized String post(String url, String content) throws Exception {
-		String result = post(url, content, 300000, null);
+		String result = post(url, content, 300000, null,null,null);
+		return result;
+	}
+
+	public synchronized String post(String url, String content,HttpServletResponse response) throws Exception {
+		String result = post(url, content, 300000, null,response,null);
 		return result;
 	}
 
-	public synchronized String post(String url, String content, Integer timeout, Map<String, String> headerMap) throws Exception {
+	public synchronized String post(String url, String content, Integer timeout, Map<String, String> headerMap,HttpServletResponse response, HttpServletRequest request) throws Exception {
 		if (Constant.http_interval > 0) {
 			Thread.sleep(Constant.http_interval);
 		}
 
 		HttpPost httpost = new HttpPost(url);
+		if (!url.contains("login")&&!url.contains("getCaptchaBase64"))
+		{
+			if(request!=null)
+			{
+				String authorization=request.getHeader("Authorization");
+				if(authorization!=null)
+				{
+					httpost.setHeader("Authorization", authorization);
+				}
+			}
+		}
 		if (headerMap != null) {
 			for (String key : headerMap.keySet()) {
 				httpost.setHeader(key, headerMap.get(key));
@@ -173,6 +190,11 @@ public class HttpClientUtil {
 		httpost.setEntity(entity);
 		entity.setContentType("application/json");
 		HttpResponse httpResponse = client.execute(httpost);
+		if(url.contains("login"))
+		{
+			Header responseFirstHeader= httpResponse.getFirstHeader("Authorization");
+			response.setHeader(responseFirstHeader.getName(),responseFirstHeader.getValue());
+		}
 		InputStream is = httpResponse.getEntity().getContent();
 		ByteArrayOutputStream baos = new ByteArrayOutputStream();
 		int b = -1;

+ 3 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/PersonUtil.java

@@ -8,15 +8,16 @@ import com.alibaba.fastjson.JSONObject;
 import com.persagy.ibms.core.data.SceneDataObject;
 import com.persagy.ibms.core.data.SceneDataSet;
 
+import javax.servlet.http.HttpServletResponse;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 public class PersonUtil {
-    public static String Login(JSONObject queryCriteria) throws Exception {
+    public static String Login(JSONObject queryCriteria, HttpServletResponse response) throws Exception {
         RepositoryImpl Repository = RepositoryContainer.instance;
         String groupCode = RepositoryContainer.RepositoryProject.groupCode;
         queryCriteria.put("groupCode",groupCode);
-        String post_result = HttpClientUtil.instance("person_center").post(Constant.person_center_url + "/user/login", queryCriteria.toJSONString());
+        String post_result = HttpClientUtil.instance("person_center").post(Constant.person_center_url + "/user/login", queryCriteria.toJSONString(),response);
         return post_result;
     }
 }