diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index bfde950e8e92eb932bf4fc8c56bf422fa061ec2c..2828bc4d0a56288900fed65f5d7b55c12fd0c0e3 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -17,7 +17,7 @@ var Resp *http.Response func Proxy(c *gin.Context) { appId := c.Param("appId") - + //获取服务相关信息 proxyData, err := service.GetRealPath(appId) if err != nil { @@ -27,14 +27,12 @@ func Proxy(c *gin.Context) { f, _ := forward.New(forward.PassHostHeader(true), forward.ResponseModifier(func(resp *http.Response) error { Resp = resp - + //判断是否可以调用 callflag, sensitiveflag, err := service.QueryCallsCount(appId, proxyData) - if err != nil { Return(err.Error()) return nil } - if callflag == false { Return(`调用达到当日限定次数`) return nil @@ -45,11 +43,11 @@ func Proxy(c *gin.Context) { var res interface{} res = respbody - + //是否需要过滤字段 if proxyData.ResFields != "" { res = service.FiledFilter(proxyData, respbody) } - + //是否需要屏蔽敏感字段 if sensitiveflag == false { res = service.SensitiveFilter(proxyData, res) } @@ -59,11 +57,8 @@ func Proxy(c *gin.Context) { })) c.Request.URL = testutils.ParseURI(proxyData.RealUrl) - c.Request.RequestURI = proxyData.RealUrl - c.Request.Host = getHost(proxyData.RealUrl) - f.ServeHTTP(c.Writer, c.Request) } diff --git a/src/service/field.go b/src/service/field.go index 61a472e591c61c118909720edd311b43a4b8eaf3..139397857a22479c4b37a0fb9f3c9f12a29fe83c 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -176,8 +176,18 @@ func FilterSensituveField(model interface{}, returnData interface{}) (body inter if k == k1 { //flag = true switch v.(type) { + case float64: + returnData.(map[string]interface{})[k] = `xxx` + case float32: + returnData.(map[string]interface{})[k] = `xxx` + case int: + returnData.(map[string]interface{})[k] = `xxx` + case bool: + returnData.(map[string]interface{})[k] = `xxx` case string: returnData.(map[string]interface{})[k] = `xxx` + default: + } FilterSensituveField(v, v1) } @@ -197,6 +207,15 @@ func FilterSensituveField(model interface{}, returnData interface{}) (body inter switch v.(map[string]interface{})[k1].(type) { case string: v.(map[string]interface{})[k1] = `xxx` + case float64: + v.(map[string]interface{})[k1] = `xxx` + case float32: + v.(map[string]interface{})[k1] = `xxx` + case int: + v.(map[string]interface{})[k1] = `xxx` + case bool: + v.(map[string]interface{})[k1] = `xxx` + default: } FilterSensituveField(v1, v2) }