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

.NET 8 Blazor Web App独立账户持久化登录失效问题求助

修复.NET 8 Blazor Web App持久化登录1小时过期问题

以下是针对该问题的具体修复方案:

1. 调整Identity安全戳验证间隔

默认情况下,Identity会每1小时验证一次用户安全戳,触发验证时若服务器端会话已失效,会强制用户重新登录。你可以在Program.cs中修改验证间隔:

builder.Services.Configure<SecurityStampValidatorOptions>(options =>
{
    // 设置为你需要的时长,示例为7天(单位:秒)
    options.ValidationInterval = TimeSpan.FromDays(7);
});

注:不建议完全禁用验证(设置TimeSpan.MaxValue),会降低账号安全性

2. 延长Blazor Server会话超时时间

Blazor Server默认会话超时为1小时,即使Cookie有效,服务器端会话过期也会导致登出。在Program.cs中调整:

builder.Services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        // 设置会话超时为两周,与Cookie过期时间匹配
        options.ClientTimeoutInterval = TimeSpan.FromDays(14);
        options.HandshakeTimeout = TimeSpan.FromMinutes(5);
    });

同时在appsettings.json中同步会话超时配置:

{
  "Session": {
    "Timeout": 20160 // 14天对应的分钟数:14*24*60=20160
  }
}

3. 确认Cookie滑动过期配置

检查Identity Cookie配置,确保滑动过期已启用,用户活动时自动延长Cookie有效期。在Program.cs中配置:

builder.Services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromDays(14);
    options.SlidingExpiration = true; // 启用滑动过期
    options.Cookie.MaxAge = TimeSpan.FromDays(14);
});

4. 清除旧Cookie测试

修改配置后,需让用户清除浏览器中的旧Identity Cookie,避免旧配置干扰新设置的生效。

额外注意事项

  • 生产环境使用HTTPS时,确保Cookie的Secure属性已启用(默认开启),防止Cookie被意外清除。
  • 检查服务器应用池回收策略,若应用池定期回收会导致Blazor会话丢失,需调整回收时间或配置进程外会话存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:57:32