fix: 加密中间件对GET请求空body返回400的问题
This commit is contained in:
@@ -46,33 +46,36 @@ func (cm *CryptoMiddleware) ProcessRequest() gin.HandlerFunc {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var req interface{}
|
// 空请求体(如 GET 请求),跳过解析,直接放行
|
||||||
if err := json.Unmarshal(body, &req); err != nil {
|
if len(body) > 0 {
|
||||||
c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"})
|
var req interface{}
|
||||||
c.Abort()
|
if err := json.Unmarshal(body, &req); err != nil {
|
||||||
return
|
c.JSON(400, gin.H{"code": 400, "message": "解析请求体失败"})
|
||||||
}
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
reqMap, ok := req.(map[string]interface{})
|
reqMap, ok := req.(map[string]interface{})
|
||||||
if ok {
|
if ok {
|
||||||
if encryptedData, exists := reqMap["data"]; exists {
|
if encryptedData, exists := reqMap["data"]; exists {
|
||||||
if dataStr, ok := encryptedData.(string); ok {
|
if dataStr, ok := encryptedData.(string); ok {
|
||||||
decrypted, err := cm.cryptoManager.Decrypt(dataStr)
|
decrypted, err := cm.cryptoManager.Decrypt(dataStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()})
|
c.JSON(400, gin.H{"code": 400, "message": "解密失败: " + err.Error()})
|
||||||
c.Abort()
|
c.Abort()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var decryptedData interface{}
|
||||||
|
if err := json.Unmarshal([]byte(decrypted), &decryptedData); err != nil {
|
||||||
|
c.JSON(400, gin.H{"code": 400, "message": "解析解密数据失败"})
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Set("decrypted_data", decryptedData)
|
||||||
|
c.Set("is_encrypted", true)
|
||||||
}
|
}
|
||||||
|
|
||||||
var decryptedData interface{}
|
|
||||||
if err := json.Unmarshal([]byte(decrypted), &decryptedData); err != nil {
|
|
||||||
c.JSON(400, gin.H{"code": 400, "message": "解析解密数据失败"})
|
|
||||||
c.Abort()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Set("decrypted_data", decryptedData)
|
|
||||||
c.Set("is_encrypted", true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user