Forráskód Böngészése

【CHG】增加签名验证错误提示信息

zhaomn 3 éve
szülő
commit
59d4456b56

+ 1 - 1
railway-admin/src/main/resources/i18n/messages.properties

@@ -31,4 +31,4 @@ no.delete.permission=\u60A8\u6CA1\u6709\u5220\u9664\u6570\u636E\u7684\u6743\u965
 no.export.permission=\u60A8\u6CA1\u6709\u5BFC\u51FA\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
 no.view.permission=\u60A8\u6CA1\u6709\u67E5\u770B\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
 #\u7B7E\u540D
-signature.fail=\u7B7E\u540D\u9A8C\u8BC1\u5931\u8D25
+signature.fail=\u7B7E\u540D\u9A8C\u8BC1\u5931\u8D25 [{0}]

+ 8 - 0
railway-common/src/main/java/com/railway/common/core/domain/AjaxResult.java

@@ -244,4 +244,12 @@ public class AjaxResult extends HashMap<String, Object> {
     return Type.SUCCESS.value == Integer.parseInt(String.valueOf(codeTag));
   }
 
+  public String getMsg(){
+    Object msgTag = this.get(MSG_TAG);
+    if (null == msgTag){
+      return "";
+    }
+    return String.valueOf(msgTag);
+  }
+
 }

+ 4 - 0
railway-common/src/main/java/com/railway/common/exception/sign/SignException.java

@@ -15,4 +15,8 @@ public class SignException extends BaseException {
     super("sign", "signature.fail", null, null);
   }
 
+  public SignException(String failMsg) {
+    super("sign", "signature.fail", new Object[]{failMsg}, failMsg);
+  }
+
 }

+ 16 - 12
railway-framework/src/main/java/com/railway/framework/security/advice/SecretRequestAdvice.java

@@ -2,6 +2,7 @@ package com.railway.framework.security.advice;
 
 import com.alibaba.fastjson.JSONObject;
 import com.railway.common.core.domain.AjaxResult;
+import com.railway.common.core.domain.dto.ReturnCode;
 import com.railway.common.exception.sign.SignException;
 import com.railway.common.utils.JsonUtil;
 import com.railway.common.utils.StringUtils;
@@ -49,10 +50,10 @@ public class SecretRequestAdvice extends RequestBodyAdviceAdapter {
   @Override
   public boolean supports(@NonNull MethodParameter methodParameter, @NonNull Type targetType,
       @NonNull Class<? extends HttpMessageConverter<?>> converterType) {
-    String[] servletPath = methodParameter.getContainingClass().getAnnotation(RequestMapping.class)
+    String[] ignorePath = methodParameter.getContainingClass().getAnnotation(RequestMapping.class)
         .value();
-    return !StringUtils.isNotEmpty(servletPath)
-        || !INeedSignCheck.SIGN_IGNORE_URLS.contains(servletPath[0]);
+    return StringUtils.isEmpty(ignorePath)
+        || !INeedSignCheck.SIGN_IGNORE_URLS.contains(ignorePath[0]);
   }
 
   @Override
@@ -113,23 +114,26 @@ public class SecretRequestAdvice extends RequestBodyAdviceAdapter {
     JSONObject json = JSONObject.parseObject(requestData);
     Map<String, String> requestMap = JsonUtil.json2Map(json);
     String requestId = UUID.randomUUID().toString();
+    // 验证时间戳
     AjaxResult ajaxResult = SignatureUtil.checkTimestamp(requestId, userTimestamp);
     if (!ajaxResult.isSuccess()) {
-      return false;
+      throw new SignException(ajaxResult.getMsg());
     }
-
+    // 组装签名参数
+    String strToSign;
     try {
-      String strToSign = SignatureUtil.getParamString(requestMap);
-      AjaxResult ret = SignatureUtil.checkSignature(requestId, strToSign, userSignature, aesKey);
-      if (ret.isSuccess()) {
-        return true;
-      }
+      strToSign = SignatureUtil.getParamString(requestMap);
     } catch (UnsupportedEncodingException e) {
       log.debug("checkSignature, unsupported encoding exception {}, {}, {}", requestId,
           e.getMessage(), e.getStackTrace());
-      return false;
+      throw new SignException(ReturnCode.SIGN_CALC_FAIL.getMessage());
+    }
+    // 验证签名
+    ajaxResult = SignatureUtil.checkSignature(requestId, strToSign, userSignature, aesKey);
+    if (!ajaxResult.isSuccess()) {
+      throw new SignException(ajaxResult.getMsg());
     }
-    return false;
+    return true;
   }
 
 }