You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6:JWT登录用户30分钟自动登出,需延长至6小时

ASP.NET Core 6外部JWT认证用户30分钟强制登出问题排查与解决

核心问题定位

你的问题根源大概率在JWT Token自身的过期声明(exp),而非ASP.NET Core的Cookie配置——外部JWT认证依赖Token自带的有效期规则,而你之前调整的Application Cookie配置仅对内置Cookie认证生效,对JWT认证流程无影响。

1. 验证JWT Token的exp声明

使用JWT解析工具(如jwt.io)解析用户登录后获取的Token,查看exp字段对应的时间:

  • 如果exp对应登录后30分钟,说明问题出在颁发Token的外部认证服务,需将Token过期时间调整为6小时。
  • 只有Token本身的有效期设为6小时,后续的辅助配置才有意义。

2. 确认JWT认证配置正确性

检查Program.cs中AddJwtBearer的配置,确保没有错误限制Token有效期:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateLifetime = true, // 默认开启,会严格验证Token的exp声明
            ClockSkew = TimeSpan.Zero, // 可选,关闭默认5分钟的时钟偏差容忍
            // 其他必填配置:ValidIssuer、ValidAudience、IssuerSigningKey等
        };
    });

注意:不要将ValidateLifetime设为false来跳过过期验证,这会带来安全风险。

3. Cookie承载JWT的辅助配置(若适用)

如果你将JWT存储在Cookie中(而非请求头),需确保Cookie过期时间大于等于JWT的有效期,避免Cookie提前过期导致无法读取Token:

builder.Services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromHours(6);
    options.SlidingExpiration = true;
});

此配置仅为辅助,核心仍需保证JWT自身的exp声明为6小时。

无效操作的原因说明

你之前尝试的以下操作对JWT认证无效:

  • Application Cookie配置:仅针对内置Cookie认证(如Identity登录)生效,JWT认证不依赖此规则。
  • AuthenticationProperties持久化:这是Cookie认证用于服务器端保存登录状态的参数,JWT是无状态令牌,不需要持久化。
  • 数据保护配置:仅用于Cookie加密,不影响JWT的过期逻辑。
  • IIS空闲超时:内置登录用户无异常,说明应用池未提前回收,排除此因素。

解决方案

  1. 修改外部认证服务的Token过期时间:联系JWT颁发方,将Token的exp声明设置为登录后6小时。
  2. 自行生成JWT时的调整:如果是你方服务生成JWT,需在生成逻辑中明确设置有效期:
var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = new ClaimsIdentity(claims),
    Expires = DateTime.UtcNow.AddHours(6), // 关键:设置为6小时有效期
    SigningCredentials = new SigningCredentials(/* 你的签名密钥对象 */)
};
var token = new JwtSecurityTokenHandler().CreateToken(tokenDescriptor);

内容的提问来源于stack exchange,提问作者N.MORR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:20:46