第54批:登录验证主权反转 - 消息文案修正
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m25s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s

根因: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
This commit is contained in:
youpaishidifu
2026-10-25 16:37:52 +08:00
parent 5e9bd5f6bf
commit ba73ebfdb2
2 changed files with 5 additions and 5 deletions
+4 -4
View File
@@ -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 拉回
+1 -1
View File
@@ -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,