Browse Source

第三方接口签名验证DEMO
将接口必填参数由body放在header里

wub 4 years ago
parent
commit
54080f9cbf
1 changed files with 8 additions and 11 deletions
  1. 8 11
      src/main/java/com/uas/eis/controller/ApiSignLoginInterceptor.java

+ 8 - 11
src/main/java/com/uas/eis/controller/ApiSignLoginInterceptor.java

@@ -29,9 +29,9 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 
         Map<String, Object> result = new HashMap<String, Object>();
-        String timestamp = request.getParameter(TIMESTAMP_KEY);
-        String accessKey = request.getParameter(ACCESS_KEY);
-        String requestId = request.getParameter(RequestId);
+        String timestamp = request.getHeader(TIMESTAMP_KEY);
+        String accessKey = request.getHeader(ACCESS_KEY);
+        String requestId = request.getHeader(RequestId);
 
         String accessSecret = tokenConfig.get(accessKey);
 
@@ -62,15 +62,12 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
     }
 
     private boolean verificationSign(HttpServletRequest request, String accessKey, String accessSecret) throws UnsupportedEncodingException {
-        Enumeration<?> pNames = request.getParameterNames();
+        Enumeration<?> pNames = request.getHeaderNames();
         Map<String, Object> params = new HashMap<String, Object>();
-        while (pNames.hasMoreElements()) {
-            String pName = (String) pNames.nextElement();
-            if (SIGN_KEY.equals(pName)) continue;
-            Object pValue = request.getParameter(pName);
-            params.put(pName, pValue);
-        }
-        String originSign = request.getParameter(SIGN_KEY);
+        params.put(ACCESS_KEY,request.getHeader(ACCESS_KEY));
+        params.put(RequestId,request.getHeader(RequestId));
+        params.put(TIMESTAMP_KEY,request.getHeader(TIMESTAMP_KEY));
+        String originSign = request.getHeader(SIGN_KEY);
         String sign = createSign(params, accessSecret);
         System.out.println(sign);