From 2bd2068c999cda5bda8c0787ed0dcaac6cb7afdb Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期四, 31 十月 2019 13:27:46 +0800 Subject: [PATCH] feat: add system reboot api --- middlewares/auth/auth.go | 69 ++++++++++++++++++++++++---------- 1 files changed, 48 insertions(+), 21 deletions(-) diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go index b029741..2de927d 100644 --- a/middlewares/auth/auth.go +++ b/middlewares/auth/auth.go @@ -5,7 +5,9 @@ "github.com/gin-gonic/gin" "net/http" "strings" - "webserver/extend/config" + "sync" + "webserver/extend/code" + "webserver/extend/util" ) const ( @@ -25,31 +27,56 @@ 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() - //} - c.Next() - } else if strings.HasPrefix(urlPath,"/httpImage") { - imgUrl := config.Server.ImageUrl - idx := strings.Index(urlPath, ":") - tmpPath := urlPath - if idx >-1 {//璺緞涓寘鍚湁绔彛,鍙栫鍙d互鍚庤矾寰� - tmpPath = urlPath[idx:] - imgIndx := strings.Index(imgUrl, ":") - if imgIndx > -1 { - imgUrl = imgUrl[:imgIndx-1] - } + jwtDriver :=NewJwtAuthDriver() + if !jwtDriver.Check(c) { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() } - fmt.Println("imgUrl+tmpPath:", imgUrl+tmpPath) - c.Header("Access-Control-Allow-Origin","*") - c.Redirect(http.StatusMovedPermanently, imgUrl+tmpPath) - return + user := (*jwtDriver).User(c) + fmt.Println("AuthHandler user:",user) + if user == nil { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() + return + } + loginM := user.(map[string]interface{}) + userId := loginM["id"].(string) + if OutUser(userId) { + util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") + c.Abort() + } + c.Next() } else { c.Next() } -- Gitblit v1.8.0