From 1b4337e04bc35c8b6f4931a5896f04884fef69c6 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期四, 02 七月 2020 15:18:43 +0800
Subject: [PATCH] fix AggregateTaskList
---
middlewares/auth/auth.go | 73 ++++++++++++++++++++++--------------
1 files changed, 44 insertions(+), 29 deletions(-)
diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go
index 98d4836..d2e365f 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"
)
@@ -16,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
}
@@ -27,40 +26,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"){
+ 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
+ }
+ 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 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()
}
@@ -68,5 +83,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