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