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

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
}
}
//修改用户资料后执行过期用户检测
sessdata.CloseUserLimittimeSession()
RespSucess(w, nil)
}

View File

@ -67,11 +67,11 @@ func CheckUserlimittime() []interface{} {
//初始化xorm时区
xdb.DatabaseTZ = time.Local
xdb.TZLocation = time.Local
var user map[int64]User
var limitUser []interface{}
u := &User{Status: 2}
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 {
limitUser = append(limitUser, v.Username)
}

View File

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

View File

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