Quellcode durchsuchen

【CHG】修改验签数据读取方法

zhaomn vor 3 Jahren
Ursprung
Commit
6fe99c5409

+ 6 - 2
railway-framework/src/main/java/com/railway/framework/security/advice/SecretRequestAdvice.java

@@ -22,6 +22,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpInputMessage;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.lang.NonNull;
+import org.springframework.util.StreamUtils;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter;
 
@@ -57,8 +58,11 @@ public class SecretRequestAdvice extends RequestBodyAdviceAdapter {
     // 读取请求头
     HttpHeaders headers = inputMessage.getHeaders();
     // 读取请求体
-    byte[] body = new byte[inputMessage.getBody().available()];
-    int len = inputMessage.getBody().read(body);
+    // available()只是估值,不可靠
+    // byte[] body = new byte[inputMessage.getBody().available()]
+    // int len = inputMessage.getBody().read(body)
+    byte[] body = StreamUtils.copyToByteArray(inputMessage.getBody());
+    int len = body.length;
     log.debug("读取数据长度:{}", len);
 
     if (!checkSignature(headers, body)) {