V0.29.1.250619_alpha:修复认证过期时间异常的问题

This commit is contained in:
jinchao 2025-06-19 10:59:58 +08:00
parent 19147adc1b
commit 10cef47e42
3 changed files with 39 additions and 6 deletions

Binary file not shown.

View File

@ -293,13 +293,26 @@
}); });
document.dispatchEvent(loginSuccessEvent); document.dispatchEvent(loginSuccessEvent);
} else { } else {
authContainer.classList.add('visible'); // 只有在非定时检查时才显示登录界面,避免频繁切换
mainContainer.classList.remove('visible'); if (!isInterval) {
authContainer.classList.add('visible');
mainContainer.classList.remove('visible');
} else {
// 定时检查发现未登录,显示提示并跳转到登录页面
showToast('登录已过期,请重新登录');
setTimeout(() => {
authContainer.classList.add('visible');
mainContainer.classList.remove('visible');
}, 1000);
}
} }
} catch (error) { } catch (error) {
console.error('认证检查错误:', 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(); 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(() => { setInterval(() => {
checkAuth(true); // 传true表示定时检查 checkAuth(true); // 传true表示定时检查
}, 5 * 60 * 1000); // 5分钟 }, 10 * 60 * 1000); // 10分钟
// 初始化用户活动检测
resetUserActivity();
}); });
</script> </script>
</body> </body>

View File

@ -50,6 +50,7 @@ app.use(session({
secret: 'xnsim-secret-key', // 用于签名 session ID cookie 的密钥 secret: 'xnsim-secret-key', // 用于签名 session ID cookie 的密钥
resave: false, // 不强制保存 session resave: false, // 不强制保存 session
saveUninitialized: false, // 不强制将未初始化的 session 存储 saveUninitialized: false, // 不强制将未初始化的 session 存储
rolling: true, // 每次请求时重置 cookie 的过期时间
cookie: { cookie: {
httpOnly: true, // 防止客户端 JavaScript 访问 cookie httpOnly: true, // 防止客户端 JavaScript 访问 cookie
secure: process.env.NODE_ENV === 'production', // 在生产环境使用 HTTPS secure: process.env.NODE_ENV === 'production', // 在生产环境使用 HTTPS