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 |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/middlewares/auth/auth.go b/middlewares/auth/auth.go
index fe7fe5f..479d931 100644
--- a/middlewares/auth/auth.go
+++ b/middlewares/auth/auth.go
@@ -4,6 +4,7 @@
 	"github.com/gin-gonic/gin"
 	"net/http"
 	"strings"
+	"sync"
 	"webserver/extend/code"
 	"webserver/extend/util"
 )
@@ -25,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
@@ -35,6 +53,10 @@
 				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 {
 			c.Next()

--
Gitblit v1.8.0