From 10cef47e425bda5454bc573df2e69e79ccb3b55d Mon Sep 17 00:00:00 2001 From: jinchao <383321154@qq.com> Date: Thu, 19 Jun 2025 10:59:58 +0800 Subject: [PATCH] =?UTF-8?q?V0.29.1.250619=5Falpha:=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Release/database/XNSim.db | Bin 1224704 -> 1224704 bytes XNSimHtml/main.html | 44 ++++++++++++++++++++++++++++++++------ XNSimHtml/server.js | 1 + 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index 07e7c1af3425771954b29daea5fd18f6d98b8a27..d72255d2ba1f19f4f017b1428a658bd6f9715f5c 100644 GIT binary patch delta 331 zcmZp8;MMTJYl1Z6%ZW11j4vA#S`!$zCNM2o&%?rVkAa_?&zg4{&%Moz0_S+@8%=#U zB^AYGqZ@<84fKpG^$d*+j7)V6%ybPc6LShO5)BQkOf9U8OrGpt_jF0`i*-w0tZ#g= zzx~;q`Ol_rdpUi}(>+a3ckFmRtL5eNbuSmqz*O*T)52$SI-f1r`K)){^C>Hyb!>mO zW%rBi&Ci-!pSD?UebK(^Y1fKpv$s5(w&DGr9-uYPrtEyOs}04V#SPEqF9q4ru=~Zn ziHRw>nR(l%?Pba{V)o%VHl6(gQ!NwEvF$A%m>hVxxtJvxAwKbGzxam8ftUk`If0l9h`E872Z(urm=B2gfmmSs#Xo}jn*kUcu-5

{ + authContainer.classList.add('visible'); + mainContainer.classList.remove('visible'); + }, 1000); + } } } catch (error) { console.error('认证检查错误:', error); - authContainer.classList.add('visible'); - mainContainer.classList.remove('visible'); + // 只有在非定时检查时才显示登录界面 + if (!isInterval) { + authContainer.classList.add('visible'); + mainContainer.classList.remove('visible'); + } } }; @@ -711,10 +724,29 @@ // 初始检查认证状态 checkAuth(); - // 每5分钟检查一次认证状态 + // 用户活动检测 - 当用户有活动时主动更新 session + let userActivityTimeout; + const resetUserActivity = () => { + clearTimeout(userActivityTimeout); + userActivityTimeout = setTimeout(() => { + // 用户无活动超过10分钟时,进行一次认证检查 + checkAuth(true); + }, 10 * 60 * 1000); // 10分钟无活动后检查 + }; + + // 监听用户活动事件 + const userActivityEvents = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart', 'click']; + userActivityEvents.forEach(event => { + document.addEventListener(event, resetUserActivity, true); + }); + + // 每10分钟检查一次认证状态(减少检查频率,因为有了用户活动检测) setInterval(() => { checkAuth(true); // 传true表示定时检查 - }, 5 * 60 * 1000); // 5分钟 + }, 10 * 60 * 1000); // 10分钟 + + // 初始化用户活动检测 + resetUserActivity(); }); diff --git a/XNSimHtml/server.js b/XNSimHtml/server.js index 5b4d79b..61225a1 100644 --- a/XNSimHtml/server.js +++ b/XNSimHtml/server.js @@ -50,6 +50,7 @@ app.use(session({ secret: 'xnsim-secret-key', // 用于签名 session ID cookie 的密钥 resave: false, // 不强制保存 session saveUninitialized: false, // 不强制将未初始化的 session 存储 + rolling: true, // 每次请求时重置 cookie 的过期时间 cookie: { httpOnly: true, // 防止客户端 JavaScript 访问 cookie secure: process.env.NODE_ENV === 'production', // 在生产环境使用 HTTPS