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
---
controllers/user.go | 1 +
middlewares/auth/auth.go | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/controllers/user.go b/controllers/user.go
index aae3cbd..463c418 100644
--- a/controllers/user.go
+++ b/controllers/user.go
@@ -161,6 +161,7 @@
var api dbapi.UserApi
b, d := api.SaveAuth(paramBody)
if b {
+ auth.SetOutUser(userEditVo.Id)
util.ResponseFormat(c,code.UpdateSuccess,d)
} else {
util.ResponseFormat(c,code.UpdateFail,"淇濆瓨澶辫触")
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