From 7c811247ecf143e08c576986a884bedadc57dd66 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 05 六月 2020 18:29:41 +0800 Subject: [PATCH] add refresh token to resp --- middlewares/auth/auth.go | 39 +++++++++++++++++++++++++++++---------- 1 files changed, 29 insertions(+), 10 deletions(-) diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go index 479d931..d0255fc 100644 --- a/middlewares/auth/auth.go +++ b/middlewares/auth/auth.go @@ -15,9 +15,10 @@ type Auth interface { Check(c *gin.Context)bool - User(c *gin.Context)interface{} - Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{} + User(c *gin.Context)map[string]interface{} + Login(http *http.Request,w http.ResponseWriter,user map[string]interface{}) (bool, string, string) Logout(http *http.Request,w http.ResponseWriter) bool + RefreshToken(tokenStr string) (bool, string, string) } func GenerateAuthDriver() *Auth { @@ -35,7 +36,16 @@ outUserM[userId] = userId } -func removeOutUser(userId string) { +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{ @@ -47,16 +57,25 @@ return func(c *gin.Context) { urlPath := c.Request.URL.Path - if strings.Contains(urlPath,"/data/api-v") && !strings.Contains(urlPath,"login"){ + if strings.Contains(urlPath,"/data/api-") && !strings.Contains(urlPath,"login") && !strings.Contains(urlPath, "/data/api-v/license") && !strings.Contains(urlPath, "/data/api-v/info/"){ jwtDriver :=NewJwtAuthDriver() if !jwtDriver.Check(c) { util.ResponseFormat(c,code.TokenNotFound,"灏氭湭鐧诲綍锛岃鐧诲綍") c.Abort() + return } - user := (*jwtDriver).User(c) - loginM := user.(map[string]interface{}) - userId := loginM["id"].(string) - removeOutUser(userId) + 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() + return + } c.Next() } else { c.Next() @@ -65,5 +84,5 @@ } func GetCurUser(c *gin.Context)map[string]interface{}{ - return (*GenerateAuthDriver()).User(c).(map[string]interface{}) -} \ No newline at end of file + return (*GenerateAuthDriver()).User(c) +} -- Gitblit v1.8.0