fix: 修复踢下线竞态窗口,先禁用再踢线防重连
KickUserClient 原先先踢线再禁用账号,客户端在两步之间自动重连时 status 仍为 1 可成功认证。调换顺序为先禁用+作废会话再踢线,确保 重连时认证已被拦截。
This commit is contained in:
@@ -474,12 +474,11 @@ func KickUserClient(c *gin.Context) {
|
||||
}
|
||||
|
||||
n := 0
|
||||
db.DB.Model(&user).Update("status", 0)
|
||||
db.DB.Model(&model.Session{}).Where("user_id = ?", id).Update("invalid", true)
|
||||
if vpn.VPN != nil && vpn.VPN.Running() {
|
||||
n = vpn.VPN.KickUser(uint(id))
|
||||
}
|
||||
|
||||
db.DB.Model(&user).Update("status", 0)
|
||||
db.DB.Model(&model.Session{}).Where("user_id = ?", id).Update("invalid", true)
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "已断开用户连接并禁用账号", "kicked": n})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user