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

Blazor为何会随机终止Cookie会话?

Blazor Server与.NET 6 Web API Cookie会话随机失效问题

我的应用分为Blazor Server前端和基于.NET 6的Web API后端,会话由后端通过Cookie管理,Blazor登录后调用后端API获取数据。

问题现象

  • 初始登录后,应用可正常运行30秒至3分钟左右
  • 停留在首页刷新时,始终保持登录状态;但跳转至其他页面时(未超过上述随机时长除外),会被强制重定向到/Account/Login
  • 失效核心表现:后端收到的请求头中不再包含Cookie,因此触发登录校验重定向

排查过程

  1. 排除后端会话超时可能:

    • 首页刷新无异常,后端持续响应正常;仅切换路由时才显现失效
    • 用Postman测试后端API,两次请求间隔8分钟以上仍保持登录状态
    • 若将登录时的ExpiresUtc设为10秒,无操作10秒后正常登出,说明后端会话逻辑本身正常
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 12:59:14