移除登录失败限流;修复连接信息被 e2e 串味为 127.0.0.1
- bootstrap.php/login.php:整体移除「5 次失败锁 10 分钟」限流,登录失败仅即时提示原因 - 新增 tools/fix-config.php:一键双写修正连接地址(默认 exam.nxxy335.top),清空账号密码让用户重输真实卷王凭据 - NY_DATA 隔离落地:run-all.sh 给写配置的 e2e 指向临时目录;修 Windows Git Bash /c/... 路径规范化 bug;.ny-test-data 加 .gitignore - 清理 dead throttle 引用(e2e 脚本 + docs) - 修 login.php 真实 bug:ny_is_auth() 分支在加载 $cfg 前引用导致 Undefined variable 警告 - 全量测试 116 通过(PHP 44 + e2e 72)
This commit is contained in:
@@ -7,6 +7,9 @@
|
||||
declare(strict_types=1);
|
||||
require __DIR__ . '/bootstrap.php';
|
||||
|
||||
// 先加载配置:下面已登录分支要用 $cfg 构造 SurveyKingClient 探活,必须在前面就准备好
|
||||
$cfg = ny_load_config();
|
||||
|
||||
if (ny_is_auth()) {
|
||||
// 已登录但卷王 token 可能已过期:用当前 token 探一次卷王 /system,能 200 即视为有效,否则清掉本地会话强制重新登录
|
||||
try {
|
||||
@@ -23,42 +26,32 @@ if (ny_is_auth()) {
|
||||
}
|
||||
}
|
||||
|
||||
$cfg = ny_load_config();
|
||||
$err = '';
|
||||
$ok = false;
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
// 登录失败限流:5 次失败锁 10 分钟,防止暴力破解
|
||||
$throttle = ny_login_throttle_check();
|
||||
if ($throttle['until'] > time()) {
|
||||
$wait = (int)(($throttle['until'] - time()) / 60) + 1;
|
||||
$err = '尝试次数过多,请 ' . $wait . ' 分钟后再试。';
|
||||
$user = trim((string)($_POST['username'] ?? $cfg['username']));
|
||||
$pwd = (string)($_POST['password'] ?? '');
|
||||
// 允许用户在本页调整账号;密码必须输入
|
||||
if ($user === '' || $pwd === '') {
|
||||
$err = '请输入账号与密码。';
|
||||
} else {
|
||||
$user = trim((string)($_POST['username'] ?? $cfg['username']));
|
||||
$pwd = (string)($_POST['password'] ?? '');
|
||||
// 允许用户在本页调整账号;密码必须输入
|
||||
if ($user === '' || $pwd === '') {
|
||||
$err = '请输入账号与密码。';
|
||||
} else {
|
||||
// 用当前配置的连接信息 + 本页输入的账密做一次卷王登录
|
||||
$test = $cfg;
|
||||
$test['username'] = $user;
|
||||
$test['password'] = $pwd;
|
||||
try {
|
||||
$client = new SurveyKingClient($test);
|
||||
$client->getToken(true);
|
||||
// 登录成功:把账号与密码写回配置(本地单用户工具,持久化密码以便 token
|
||||
// 失效时平台能自动重新登录卷王,避免后台刷新陷入"未配置账号"的死状态)
|
||||
$cfg['username'] = $user;
|
||||
$cfg['password'] = $pwd;
|
||||
ny_save_config($cfg);
|
||||
ny_login();
|
||||
ny_login_throttle_reset();
|
||||
$ok = true;
|
||||
} catch (Throwable $e) {
|
||||
ny_login_throttle_hit();
|
||||
$err = '登录失败:' . $e->getMessage();
|
||||
}
|
||||
// 用当前配置的连接信息 + 本页输入的账密做一次卷王登录
|
||||
$test = $cfg;
|
||||
$test['username'] = $user;
|
||||
$test['password'] = $pwd;
|
||||
try {
|
||||
$client = new SurveyKingClient($test);
|
||||
$client->getToken(true);
|
||||
// 登录成功:把账号与密码写回配置(本地单用户工具,持久化密码以便 token
|
||||
// 失效时平台能自动重新登录卷王,避免后台刷新陷入"未配置账号"的死状态)
|
||||
$cfg['username'] = $user;
|
||||
$cfg['password'] = $pwd;
|
||||
ny_save_config($cfg);
|
||||
ny_login();
|
||||
$ok = true;
|
||||
} catch (Throwable $e) {
|
||||
$err = '登录失败:' . $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user