修复过期用户无法踢下线的问题,优化检测过期用户

This commit is contained in:
wsczx 2022-10-17 12:17:04 +08:00
parent 3dbc369e6b
commit b1890a2c8a
4 changed files with 9 additions and 11 deletions

View File

@ -107,7 +107,8 @@ func UserSet(w http.ResponseWriter, r *http.Request) {
return return
} }
} }
//修改用户资料后执行过期用户检测
sessdata.CloseUserLimittimeSession()
RespSucess(w, nil) RespSucess(w, nil)
} }

View File

@ -67,11 +67,11 @@ func CheckUserlimittime() []interface{} {
//初始化xorm时区 //初始化xorm时区
xdb.DatabaseTZ = time.Local xdb.DatabaseTZ = time.Local
xdb.TZLocation = time.Local xdb.TZLocation = time.Local
var user map[int64]User
var limitUser []interface{}
u := &User{Status: 2} u := &User{Status: 2}
xdb.Where("limittime <= ?", time.Now()).And("status = ?", 1).Update(u) xdb.Where("limittime <= ?", time.Now()).And("status = ?", 1).Update(u)
xdb.Where("status= ?", 2).Find(u) user := make(map[int64]User)
limitUser := make([]interface{}, 0)
xdb.Where("status= ?", 2).Find(user)
for _, v := range user { for _, v := range user {
limitUser = append(limitUser, v.Username) limitUser = append(limitUser, v.Username)
} }

View File

@ -117,14 +117,10 @@ func checkSession() {
// 状态为过期的用户踢下线 // 状态为过期的用户踢下线
func CloseUserLimittimeSession() { func CloseUserLimittimeSession() {
s := mapset.NewSetFromSlice(dbdata.CheckUserlimittime()) s := mapset.NewSetFromSlice(dbdata.CheckUserlimittime())
for k, v := range sessions { for _, v := range sessions {
sessMux.Lock() if v.IsActive && s.Contains(v.Username) {
v.mux.Lock() CloseSess(v.Token)
if !v.IsActive && s.Contains(v.Username) {
delete(sessions, k)
} }
v.mux.Unlock()
sessMux.Unlock()
} }
} }

View File

@ -4,4 +4,5 @@ func Start() {
initIpPool() initIpPool()
checkSession() checkSession()
saveStatsInfo() saveStatsInfo()
CloseUserLimittimeSession()
} }