| | |
| | | |
| | | 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 { |
| | |
| | | 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{ |
| | |
| | | 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() |
| | |
| | | } |
| | | |
| | | func GetCurUser(c *gin.Context)map[string]interface{}{ |
| | | return (*GenerateAuthDriver()).User(c).(map[string]interface{}) |
| | | } |
| | | return (*GenerateAuthDriver()).User(c) |
| | | } |