From 69da3b21a38367f82d35e2e12bbdcba1675026d8 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sun, 16 Aug 2026 17:08:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(sage):=20up=5Flogin=20=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E6=B8=85=E9=9B=B6=E5=A4=B1=E8=B4=A5=E6=AC=A1?= =?UTF-8?q?=E6=95=B0=E3=80=81=E5=A4=B1=E8=B4=A5=E6=8C=895=E5=88=86?= =?UTF-8?q?=E9=92=9F=E7=AA=97=E5=8F=A3=E7=B4=AF=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/up_login.dspy | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wwwroot/up_login.dspy b/wwwroot/up_login.dspy index 2e251900..e29180d0 100644 --- a/wwwroot/up_login.dspy +++ b/wwwroot/up_login.dspy @@ -11,6 +11,8 @@ db = DBPools() async with db.sqlorContext('sage') as sor: r = await sor.sqlExe('select * from users where username=${username}$ and password=${password}$', ns.copy()) if len(r) == 0: + # 登录失败:连续失败次数 +1(超过5分钟则重置为1) + await sor.sqlExe("UPDATE users SET login_fail_count = CASE WHEN last_login_fail IS NULL OR last_login_fail < NOW() - INTERVAL 5 MINUTE THEN 1 ELSE login_fail_count + 1 END, last_login_fail = NOW() WHERE username=${username}$", {'username': ns['username']}) return { "widgettype":"Error", "options":{ @@ -19,6 +21,8 @@ async with db.sqlorContext('sage') as sor: "message":"user name or password error" } } + # 登录成功:清除连续失败次数 + await sor.sqlExe("UPDATE users SET login_fail_count = 0, last_login_fail = NULL, last_login = NOW() WHERE id=${id}$", {'id': r[0].id}) await remember_user(r[0].id, username=r[0].username, userorgid=r[0].orgid) return { "widgettype":"Message",