diff --git a/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs b/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs
index f69cdf9f..7fd5d753 100644
--- a/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs
+++ b/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs
@@ -131,6 +131,11 @@ public class ConfigConst
///
public const string SysI18NSwitch = "sys_i18n_switch";
+ ///
+ /// 闲置超时时间
+ ///
+ public const string SysIdleTimeout = "sys_idle_timeout";
+
///
/// 支付宝授权页面地址
///
diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs
index 46ce8f83..85c27e6f 100644
--- a/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs
+++ b/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs
@@ -39,6 +39,7 @@ public class SysConfigSeedData : ISqlSugarEntitySeedData
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=1300000000282, 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") },
];
diff --git a/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs b/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
index eb193f98..9126cf69 100644
--- a/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
@@ -588,6 +588,7 @@ public class SysTenantService : IDynamicApiController, ITransient
var forceChangePassword = await _sysConfigService.GetConfigValueByCode(ConfigConst.SysForceChangePassword); // 强制修改密码
var passwordExpirationTime = await _sysConfigService.GetConfigValueByCode(ConfigConst.SysPasswordExpirationTime); // 密码有效期
var i18NSwitch = await _sysConfigService.GetConfigValueByCode(ConfigConst.SysI18NSwitch); // 开启多语言切换
+ var idleTimeout = await _sysConfigService.GetConfigValueByCode(ConfigConst.SysIdleTimeout); // 闲置超时时间
var publicKey = App.GetConfig("Cryptogram:PublicKey", true); // 获取密码加解密公钥配置
return new
@@ -612,6 +613,7 @@ public class SysTenantService : IDynamicApiController, ITransient
PublicKey = publicKey,
CarouselFiles = carouselFiles,
I18NSwitch = i18NSwitch,
+ IdleTimeout = idleTimeout,
};
}
diff --git a/Web/src/App.vue b/Web/src/App.vue
index 74282168..a98d3eb7 100644
--- a/Web/src/App.vue
+++ b/Web/src/App.vue
@@ -21,6 +21,7 @@ import { Local, Session } from '/@/utils/storage';
import mittBus from '/@/utils/mitt';
import setIntroduction from '/@/utils/setIconfont';
// import Watermark from '/@/utils/watermark';
+import { initIdleTimeout } from './utils/idleTimeout';
// 引入组件
const LockScreen = defineAsyncComponent(() => import('/@/layout/lockScreen/index.vue'));
@@ -102,6 +103,11 @@ document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
+
+// 初始化全局空闲超时
+initIdleTimeout({
+ timeout: themeConfig.value.idleTimeout,
+});