From 9fda231d479475f03b0ab0e0f0bfde6803368a84 Mon Sep 17 00:00:00 2001 From: kevin Date: Fri, 10 Jul 2026 14:21:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B8=A2=E4=B8=8B?= =?UTF-8?q?=E7=BA=BF=E7=AB=9E=E6=80=81=E7=AA=97=E5=8F=A3=EF=BC=8C=E5=85=88?= =?UTF-8?q?=E7=A6=81=E7=94=A8=E5=86=8D=E8=B8=A2=E7=BA=BF=E9=98=B2=E9=87=8D?= =?UTF-8?q?=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit KickUserClient 原先先踢线再禁用账号,客户端在两步之间自动重连时 status 仍为 1 可成功认证。调换顺序为先禁用+作废会话再踢线,确保 重连时认证已被拦截。 --- internal/handler/vpn.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/handler/vpn.go b/internal/handler/vpn.go index fb186fb..04976dc 100644 --- a/internal/handler/vpn.go +++ b/internal/handler/vpn.go @@ -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}) }