From f26a0cab5bca17b7eab57f6330e576271e17a17f Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期三, 13 十一月 2019 19:12:08 +0800 Subject: [PATCH] update ynSwagger,sync to master --- middlewares/auth/auth.go | 81 ++++++++++++++++++++++++---------------- 1 files changed, 48 insertions(+), 33 deletions(-) diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go index 8a23438..d897b00 100644 --- a/middlewares/auth/auth.go +++ b/middlewares/auth/auth.go @@ -4,8 +4,9 @@ "github.com/gin-gonic/gin" "net/http" "strings" - "webserver/extend/config" - "webserver/extend/logger" + "sync" + "webserver/extend/code" + "webserver/extend/util" ) const ( @@ -14,7 +15,7 @@ type Auth interface { Check(c *gin.Context)bool - User(c *gin.Context)interface{} + User(c *gin.Context)map[string]interface{} Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{} Logout(http *http.Request,w http.ResponseWriter) bool } @@ -25,40 +26,54 @@ return &authDriver } +var outUserM = make(map[string]string,0) +var lock sync.RWMutex + +func SetOutUser(userId string) { + lock.Lock() + defer lock.Unlock() + outUserM[userId] = userId +} + +func OutUser(userId string) bool { + lock.Lock() + defer lock.Unlock() + if _,ok := outUserM[userId];ok{ + return true + } + return false +} + +func RemoveOutUser(userId string) { + lock.Lock() + defer lock.Unlock() + if _,ok := outUserM[userId];ok{ + delete(outUserM,userId) + } +} + func AuthHandler() gin.HandlerFunc { return func(c *gin.Context) { urlPath := c.Request.URL.Path - if strings.Contains(urlPath,"/data/api-v") && !strings.Contains(urlPath,"login"){ - //jwtDriver :=NewJwtAuthDriver() - //if !jwtDriver.Check(c) { - // util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") - // c.Abort() - //} + if strings.Contains(urlPath,"/data/api-") && !strings.Contains(urlPath,"login"){ + jwtDriver :=NewJwtAuthDriver() + if !jwtDriver.Check(c) { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() + } + userM := (*jwtDriver).User(c) + if userM == nil { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() + return + } + userId := userM["id"].(string) + if OutUser(userId) { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() + } c.Next() - } else if strings.Contains(urlPath,"/httpImage") { - domain := config.Server.PublicDomain - //domainReg := regexp.MustCompile(``+domain+``) - //if domainReg.MatchString(host) {//鍩熷悕璁块棶 - // imgUrl = domain - //} - - urlPath = strings.Replace(urlPath, "/httpImage", "", -1) - if strings.Contains(urlPath,domain) { - urlPath = strings.Replace(urlPath,"/"+domain,"",-1) - } - logger.Debug("urlPath:",urlPath) - idx := strings.LastIndex(urlPath, ":") - tmpPath := "" - if idx >-1 {//璺緞涓寘鍚湁绔彛,鍙栫鍙d互鍚庤矾寰� - tmpPath = urlPath[idx:] - } else { - tmpPath = ":6080"+tmpPath - } - c.Header("Access-Control-Allow-Origin","*") - logger.Debug("domain+tmpPath:",domain+tmpPath) - c.Redirect(http.StatusMovedPermanently, domain+tmpPath) - return } else { c.Next() } @@ -66,5 +81,5 @@ } func GetCurUser(c *gin.Context)map[string]interface{}{ - return (*GenerateAuthDriver()).User(c).(map[string]interface{}) + return (*GenerateAuthDriver()).User(c) } \ No newline at end of file -- Gitblit v1.8.0