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

ASP.NET Core 6.0 MVC如何设置身份验证令牌滚动过期时间

ASP.NET Core 6.0 MVC 个人用户账户模式配置令牌过期(支持滚动过期)

官方模板选Individual Accounts创建的项目,底层默认用ASP.NET Core Identity + Cookie认证实现身份校验,令牌过期、滚动过期都是原生支持的能力,不需要额外引入第三方组件,直接修改配置即可生效。

核心配置实现

找到项目根目录下的Program.cs文件,定位到AddDefaultIdentity服务注册的代码段,补充认证Cookie的相关配置即可:

// 模板默认生成的Identity注册代码,原有配置保留即可
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();

// 追加以下配置,设置令牌过期规则与滚动过期逻辑
builder.Services.ConfigureApplicationCookie(options =>
{
    // 基础有效期:用户无操作20分钟后令牌失效
    options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
    // 开启滚动过期:用户在有效期内发起任意请求,只要剩余有效期不足总时长的一半,就会自动刷新令牌、重置过期计时
    options.SlidingExpiration = true;
    
    // 建议配置:绝对过期上限,无论用户是否持续活跃,到点必须重新登录,避免令牌永久有效的安全风险,示例设为最长7天
    options.Cookie.MaxAge = TimeSpan.FromDays(7);
    
    // 以下路径模板默认已配置,无需修改
    options.LoginPath = "/Identity/Account/Login";
    options.AccessDeniedPath = "/Identity/Account/AccessDenied";
});

参数说明

  • ExpireTimeSpan:令牌基础有效期,即用户无操作的最长容忍时长,可根据业务场景调整:内部管理系统一般设30分钟,公开站点可设1-2小时
  • SlidingExpiration:赋值为true即开启滚动过期,是核心需求对应的配置项。中间件会自动在请求满足刷新条件时颁发新令牌,不需要手写额外刷新逻辑
  • Cookie.MaxAge:令牌绝对有效期上限,建议必须配置,避免用户长期保持活跃就永远不需要重新登录的安全隐患,一般按业务安全要求设7-30天即可

特殊场景适配(记住我功能)

如果项目启用了登录页的“记住我”功能,需要给持久化登录场景单独设置更长的有效期,可以修改登录页的后端逻辑(路径为Areas/Identity/Pages/Account/Login.cshtml.cs),在登录时传入自定义的认证属性:

// 替换默认的PasswordSignInAsync调用逻辑
if (Input.RememberMe)
{
    var authProperties = new AuthenticationProperties
    {
        IsPersistent = true,
        // 记住我场景下,令牌最长有效期设为14天,仍然受滚动过期规则约束
        ExpiresUtc = DateTimeOffset.UtcNow.AddDays(14),
        AllowRefresh = true
    };
    await _signInManager.SignInAsync(user, authProperties);
}
else
{
    // 非记住我场景走默认配置,即前面设置的20分钟无操作过期
    await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, false, lockoutOnFailure: false);
}

注意事项

  • 不要把过期配置写在AddDefaultIdentity的委托参数里,那个配置优先级低于ConfigureApplicationCookie的Cookie规则,容易出现配置不生效的问题
  • 配置修改后重启应用即可,新登录的用户会直接应用新规则,已登录的旧用户会按原有令牌规则自然过期后切换到新规则

内容的提问来源于stack exchange,提问作者MikeT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:48:15