From eb2c3a8890a0e9695c0cd2bc3b3dc310c6fbcfa9 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期六, 26 十月 2019 11:28:23 +0800 Subject: [PATCH] fix user timeout --- middlewares/auth/auth.go | 47 ++++++++++++++++++++++------------------------- 1 files changed, 22 insertions(+), 25 deletions(-) diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go index 98d4836..479d931 100644 --- a/middlewares/auth/auth.go +++ b/middlewares/auth/auth.go @@ -4,9 +4,8 @@ "github.com/gin-gonic/gin" "net/http" "strings" + "sync" "webserver/extend/code" - "webserver/extend/config" - "basic.com/valib/logger.git" "webserver/extend/util" ) @@ -27,6 +26,23 @@ 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 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 @@ -37,30 +53,11 @@ util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") c.Abort() } + user := (*jwtDriver).User(c) + loginM := user.(map[string]interface{}) + userId := loginM["id"].(string) + removeOutUser(userId) 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() } -- Gitblit v1.8.0