From ba73ebfdb2230890cbdda9f1ca2101f1b5eaaec2 Mon Sep 17 00:00:00 2001 From: youpaishidifu <1@ypshidifu.cn> Date: Sun, 25 Oct 2026 16:37:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC54=E6=89=B9=EF=BC=9A=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E4=B8=BB=E6=9D=83=E5=8F=8D=E8=BD=AC=20-=20?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=96=87=E6=A1=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:LoginManager.java:309 '正在核对网页端最新密码…' 暗示 PHP 有更高权威, 用户感知「主权搞反了」。 架构现状(已确认无需改动): - PHP 不验证密码(sync.php verify_web_password 已禁用) - Java 本地 checkPasswordWithFallback 为主 - Java 拉回 PHP 凭证入库主密码(applyPulledRow → updatePassword) - Java 回传结果给 PHP(sendWebLoginResult → complete_web_login_request) 修复: 1. LoginManager.java: 消息文案改为中性「正在同步账号数据…」 2. WebManager.java:6550: 冻结解冻消息改为「请在游戏内执行 /sdf1_login pw」 3. 注释更新:明确「拉回PHP凭证入库为主密码」「以Java本地login.db为准」 验证: - 括号配平 PASS(final=0, min=0) - mvn clean compile BUILD SUCCESS (16.9s) - 行尾:LoginManager LF, WebManager CRLF --- src/main/java/Sdf1_login/LoginManager.java | 8 ++++---- src/main/java/Sdf1_login/WebManager.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/Sdf1_login/LoginManager.java b/src/main/java/Sdf1_login/LoginManager.java index c82daa0..154c399 100644 --- a/src/main/java/Sdf1_login/LoginManager.java +++ b/src/main/java/Sdf1_login/LoginManager.java @@ -218,8 +218,8 @@ public class LoginManager { } - // ★第48批#244:密码不匹配 → 先尝试与网页端即时对账(网页可能刚改密被覆盖), - // 15秒/人限流;对账完成后主线程自动重校验,仍未过才计失败次数 + // ★第54批:密码不匹配 → 先同步账号数据(拉回PHP侧凭证入库为主密码), + // 15秒/人限流;同步完成后主线程自动重校验(以Java本地login.db为准),仍未过才计失败次数 if (maybeRetryAfterWebSync(p, pwd)) return true; // ★ 密码错误,记录风控 @@ -292,7 +292,7 @@ public class LoginManager { } /** - * ★第48批#244:密码校验失败时先与网页端对账(拉回网页新密码)再自动重试一次。 + * ★第54批:密码校验失败时先同步账号数据(拉回PHP侧凭证入库)再自动重试一次。 * 15秒/人限流;重试仍失败走正常风控计数。 * * @return true = 本轮 /login 已交给异步对账流程处理(调用方直接 return) @@ -306,7 +306,7 @@ public class LoginManager { if (last != null && now - last < 15000L) return false; // 15秒/人限流 pwSyncRetryAt.put(name, now); pwSyncRetrying.add(name); - p.sendMessage("§e§l[登录] §e正在核对网页端最新密码…"); + p.sendMessage("§e§l[登录] §e正在同步账号数据…"); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { try { plugin.webManager.pushWebLoginCredentials(); // 含 alignGate 拉回 diff --git a/src/main/java/Sdf1_login/WebManager.java b/src/main/java/Sdf1_login/WebManager.java index 6b8368a..f543426 100644 --- a/src/main/java/Sdf1_login/WebManager.java +++ b/src/main/java/Sdf1_login/WebManager.java @@ -6547,7 +6547,7 @@ public class WebManager { // ★ 玩家主动冻结账号(异地登录邮件触发):Bukkit 原生封禁 String target = targetName; if (!target.isEmpty()) { - String reason = "§c§l您的账号已被临时冻结(疑似被盗)\n§7请到网页修改密码后自动解冻"; + String reason = "§c§l您的账号已被临时冻结(疑似被盗)\n§7请在游戏内执行 /sdf1_login pw 修改密码后自动解冻"; Bukkit.getBanList( org.bukkit.BanList.Type.NAME) .addBan(target, reason,