.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
相关产品推荐
相关产品推荐

