Blazor为何会随机终止Cookie会话?
我的应用分为Blazor Server前端和基于.NET 6的Web API后端,会话由后端通过Cookie管理,Blazor登录后调用后端API获取数据。
问题现象
- 初始登录后,应用可正常运行30秒至3分钟左右
- 停留在首页刷新时,始终保持登录状态;但跳转至其他页面时(未超过上述随机时长除外),会被强制重定向到
/Account/Login - 失效核心表现:后端收到的请求头中不再包含Cookie,因此触发登录校验重定向
排查过程
排除后端会话超时可能:
- 首页刷新无异常,后端持续响应正常;仅切换路由时才显现失效
- 用Postman测试后端API,两次请求间隔8分钟以上仍保持登录状态
- 若将登录时的
ExpiresUtc设为10秒,无操作10秒后正常登出,说明后端会话逻辑本身正常
Cookie配置异常发现:
- Blazor端配置了Cookie过期时间为12小时,但浏览器中显示Cookie过期时间为会话结束时,而非预期的12小时后
相关代码片段
后端登录逻辑(凭据/角色校验完成后)
var authProperties = new AuthenticationProperties { AllowRefresh = true, ExpiresUtc = DateTimeOffset.UtcNow.AddHours(12), IsPersistent = true }; await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);
后端Cookie配置(ConfigureServices方法)
public void ConfigureServices(IServiceCollection services) { string connectionString = Configuration.GetValue<string>("ConnectionString"); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.ExpireTimeSpan = TimeSpan.FromHours(12); }); }
Blazor端Cookie配置
builder.Services.ConfigureApplicationCookie(options => { options.Cookie.Expiration = TimeSpan.FromHours(12); }
疑问
当前配置的Cookie过期时间为12小时,但实际出现随机几分钟内失效的情况,且仅在Blazor路由跳转时触发,怀疑是Blazor端配置遗漏导致。希望彻底解决Cookie超时问题,而非仅实现登录重定向逻辑。
注:应用部署后使用HTTPS,本地HTTP/HTTPS环境均出现此问题
内容的提问来源于stack exchange,提问作者andrea
相关产品推荐
相关产品推荐

