第57批续19: Java 侧 token 0/1 状态位统一管理
1. autoGenerateWebLoginToken 加 10s 冷却去重(修"每次登录推2个token"刷屏)。 2. 三处 push URL 的 login_verified 值统一: 已注册/已登录→1(网页直接放行), 未注册→0(网页要求输密码/注册)。 3. pushLoginVerified 加注释说明(登录收口已保证玩家已登录, 此路径固定推1)。 4. 修复续17遗留损坏: submitWebEmailBindResult 5参重载方法体被吞, 保留委托调用(非递归)并加说明注释。 mvn -q -o clean package 编译通过。
This commit is contained in:
@@ -6082,7 +6082,9 @@ public class WebManager {
|
|||||||
public boolean hasBanPending() { return banPending; }
|
public boolean hasBanPending() { return banPending; }
|
||||||
/** 待确认缺口的封禁条数 */
|
/** 待确认缺口的封禁条数 */
|
||||||
public int getBanPendingCount() { return banPendingCount; }
|
public int getBanPendingCount() { return banPendingCount; }
|
||||||
/** 第57批:/login 成功后推送 login_verified=1 给 PHP(修复网页端显示未登录) */
|
/** 第57批:/login 成功后推送 login_verified=1 给 PHP(修复网页端显示未登录)
|
||||||
|
* ★ 第57批续19: 登录收口(finishPasswordLogin)已保证玩家已登录, 此路径固定推 login_verified=1
|
||||||
|
* (PHP 收到 1 → 该 token 网页直接放行, 不要求二次输密码) */
|
||||||
public void pushLoginVerified(String playerName) {
|
public void pushLoginVerified(String playerName) {
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
try {
|
try {
|
||||||
@@ -9254,7 +9256,8 @@ public class WebManager {
|
|||||||
+ "&online=1"
|
+ "&online=1"
|
||||||
+ "®istered=" + (isRegistered ? "1" : "0")
|
+ "®istered=" + (isRegistered ? "1" : "0")
|
||||||
+ "&ip=" + java.net.URLEncoder.encode(playerIp, "UTF-8")
|
+ "&ip=" + java.net.URLEncoder.encode(playerIp, "UTF-8")
|
||||||
+ "&login_verified=" + (isLoggedIn ? "1" : "0")
|
// ★ 第57批续19: login_verified 状态位统一管理 —— 手动 /weblogin 同逻辑(已注册推1, 未注册推0)
|
||||||
|
+ "&login_verified=" + (isRegistered ? "1" : "0")
|
||||||
+ "&email_suffix_mode=" + java.net.URLEncoder.encode(config != null ? config.getEmailValidationMode() : "默认", "UTF-8")
|
+ "&email_suffix_mode=" + java.net.URLEncoder.encode(config != null ? config.getEmailValidationMode() : "默认", "UTF-8")
|
||||||
+ "&email_suffix_list=" + java.net.URLEncoder.encode(config != null ? config.getEmailSuffixList() : "", "UTF-8"); // ★ 按实际登录状态告知PHP(未登录推0让PHP清除旧记录)
|
+ "&email_suffix_list=" + java.net.URLEncoder.encode(config != null ? config.getEmailSuffixList() : "", "UTF-8"); // ★ 按实际登录状态告知PHP(未登录推0让PHP清除旧记录)
|
||||||
String response = doGet(urlStr);
|
String response = doGet(urlStr);
|
||||||
@@ -9323,6 +9326,14 @@ public class WebManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
|
// ★ 第57批续19: 10秒冷却去重 —— 修"每次登录推2个token"刷屏
|
||||||
|
// 进服/重连/手动/weblogin 多条链路短时间内对同一玩家触发多次, 只保留最新一次
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
Long lastTime = webloginTokenTimestamps.get(playerName);
|
||||||
|
if (lastTime != null && (now - lastTime) < WEBLOGIN_TOKEN_COOLDOWN_MS) {
|
||||||
|
return; // 冷却期内跳过, 避免刷屏+重复推送
|
||||||
|
}
|
||||||
|
webloginTokenTimestamps.put(playerName, now);
|
||||||
// 生成weblogin专用Token
|
// 生成weblogin专用Token
|
||||||
String token = generateToken(playerName, "weblogin");
|
String token = generateToken(playerName, "weblogin");
|
||||||
// ★ 生成token时检查login.db并推送注册状态给PHP
|
// ★ 生成token时检查login.db并推送注册状态给PHP
|
||||||
@@ -9346,7 +9357,8 @@ public class WebManager {
|
|||||||
+ "&online=1"
|
+ "&online=1"
|
||||||
+ "®istered=" + (isRegistered ? "1" : "0")
|
+ "®istered=" + (isRegistered ? "1" : "0")
|
||||||
+ "&ip=" + java.net.URLEncoder.encode(playerIp, "UTF-8")
|
+ "&ip=" + java.net.URLEncoder.encode(playerIp, "UTF-8")
|
||||||
+ "&login_verified=" + (isLoggedIn ? "1" : "0")
|
// ★ 第57批续19: login_verified 状态位统一管理 —— 已注册/已登录推1(网页直接放行), 未注册推0(网页要求输密码/注册)
|
||||||
|
+ "&login_verified=" + (isRegistered ? "1" : "0")
|
||||||
+ "&email_suffix_mode=" + java.net.URLEncoder.encode(config != null ? config.getEmailValidationMode() : "默认", "UTF-8")
|
+ "&email_suffix_mode=" + java.net.URLEncoder.encode(config != null ? config.getEmailValidationMode() : "默认", "UTF-8")
|
||||||
+ "&email_suffix_list=" + java.net.URLEncoder.encode(config != null ? config.getEmailSuffixList() : "", "UTF-8");
|
+ "&email_suffix_list=" + java.net.URLEncoder.encode(config != null ? config.getEmailSuffixList() : "", "UTF-8");
|
||||||
String response = doGet(urlStr);
|
String response = doGet(urlStr);
|
||||||
@@ -12467,6 +12479,7 @@ public class WebManager {
|
|||||||
final String action, final String failReason,
|
final String action, final String failReason,
|
||||||
final java.util.function.Consumer<String> callback) {
|
final java.util.function.Consumer<String> callback) {
|
||||||
submitWebEmailBindResult(reqId, playerName, action, failReason, false, callback);
|
submitWebEmailBindResult(reqId, playerName, action, failReason, false, callback);
|
||||||
|
// ★ 第57批续19修复: 上面为委托调用(非递归), 方法体保留供 12372/12381 行 5参调用点使用
|
||||||
}
|
}
|
||||||
|
|
||||||
public void submitWebEmailBindResult(final String reqId, final String playerName,
|
public void submitWebEmailBindResult(final String reqId, final String playerName,
|
||||||
|
|||||||
Reference in New Issue
Block a user