fix: idleTimeout 过早引入 signalR 导致在线用户不生效问题

This commit is contained in:
写意 2025-04-18 14:28:03 +08:00
parent 3fba4b5cd6
commit fe1f081caa
2 changed files with 17 additions and 5 deletions

View File

@ -39,7 +39,7 @@ public class SysConfigSeedData : ISqlSugarEntitySeedData<SysConfig>
new SysConfig{ Id=1300000000261, Name="密码历史记录验证", Code=ConfigConst.SysPasswordRecord, Value="False", SysFlag=YesNoEnum.Y, Remark="是否验证历史密码禁止再次使用", OrderNo=210, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-17 00:00:00") },
new SysConfig{ Id=1300000000271, Name="显示系统更新日志", Code=ConfigConst.SysUpgrade, Value="True", SysFlag=YesNoEnum.Y, Remark="是否显示系统更新日志", OrderNo=220, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-20 00:00:00") },
new SysConfig{ Id=1300000000281, Name="多语言切换", Code=ConfigConst.SysI18NSwitch, Value="True", SysFlag=YesNoEnum.Y, Remark="是否显示多语言切换按钮", OrderNo=230, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-20 00:00:00") },
new SysConfig{ Id=1300000000291, Name="闲置超时时间", Code=ConfigConst.SysIdleTimeout, Value="0", SysFlag=YesNoEnum.Y, Remark="闲置超时时间(分钟超时强制退出0 表示不限制", OrderNo=240, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-20 00:00:00") },
new SysConfig{ Id=1300000000291, Name="闲置超时时间", Code=ConfigConst.SysIdleTimeout, Value="0", SysFlag=YesNoEnum.Y, Remark="闲置超时时间(超时强制退出0 表示不限制", OrderNo=240, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-20 00:00:00") },
new SysConfig{ Id=1300000000999, Name="系统版本号", Code=ConfigConst.SysVersion, Value="0", SysFlag=YesNoEnum.Y, Remark= "系统版本号,用于自动升级,请勿手动填写", OrderNo=1000, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2025-04-10 00:00:00") },
];

View File

@ -1,6 +1,5 @@
import { debounce } from 'lodash-es';
import { Local, Session } from '/@/utils/storage';
// import { signalR } from '/@/views/system/onlineUser/signalR';
import { ElMessageBox } from 'element-plus';
import { accessTokenKey, refreshAccessTokenKey } from '/@/utils/axios-utils';
import { i18n } from '/@/i18n';
@ -16,6 +15,18 @@ type IdleTimeoutConfig = {
debounceInterval?: number;
};
// 动态导入 signalR
let signalR: any;
/** 动态导入 signalR */
async function loadSignalR() {
if (!signalR) {
const module = await import('/@/views/system/onlineUser/signalR');
signalR = module.signalR;
}
return signalR;
}
class IdleTimeoutManager {
private timerId: number | null = null;
private readonly config: Required<IdleTimeoutConfig>;
@ -112,10 +123,11 @@ class IdleTimeoutManager {
// 移除 app 元素,即清空主界面
const appEl = document.getElementById('app')!;
appEl?.remove();
// 关闭连接
// signalR.stop();
// TODO: 如果要改成调用 logout 登出接口,需要调整 clearAccessTokens 会 reload 页面的问题
// 动态加载 signalR 并调用 stop 方法
loadSignalR().then((signalR) => {
signalR.stop();
});
// 清除 token
Local.remove(accessTokenKey);