From 78b7028ee2eb2ddc726b4cd5084108e3b7fb1c3d Mon Sep 17 00:00:00 2001 From: zhangyudi Date: Sat, 9 May 2020 14:51:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=B0=83=E7=94=A8=EF=BC=88?= =?UTF-8?q?=E6=9C=AA=E5=AE=9E=E8=AE=A1=E6=AC=A1=E5=85=A5=E5=BA=93=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/handler/proxyhandler.go | 13 ++++--------- src/service/field.go | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index bfde950..2828bc4 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 61a472e..1393978 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) } -- 2.26.0