ASP.NET Core Identity频繁登出求助:迁移服务器后登录状态失效
迁移服务器后登录状态快速失效,结合你的配置代码,主要排查以下几个方向:
Cookie 认证配置缺失持久化设置
你提供的Configure方法中没有包含Cookie认证的具体配置,ASP.NET Core默认的Cookie认证是会话级(关闭浏览器即失效),或过期时间极短。需要在ConfigureServices中确认是否配置了持久化Cookie:services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.ExpireTimeSpan = TimeSpan.FromDays(30); // 自定义持久化时长 options.Cookie.MaxAge = TimeSpan.FromDays(30); options.SlidingExpiration = true; // 用户活动时自动延长有效期 });迁移时若未同步这部分配置,就会导致登录状态无法长期保持。
服务器应用池回收策略导致会话丢失
如果网站依赖服务器端会话存储(比如默认的内存会话),新服务器的应用池可能设置了较短的闲置超时或回收周期(比如IIS默认20分钟闲置回收)。应用池回收后,服务器端的会话数据会被清空,用户需要重新登录。- 调整服务器应用池的闲置超时和固定回收时间,延长周期;
- 建议改用分布式会话存储(如Redis、数据库),避免单服务器会话丢失问题。
Cookie 域/路径配置不匹配
迁移后域名变更,或Cookie的Domain/Path配置与当前网站域名、路径不一致,会导致浏览器无法正确保存或携带Cookie。比如旧服务器的Cookie域是旧域名,新服务器用了新域名,浏览器不会识别该Cookie,每次请求都需重新登录。
检查Cookie配置中的Domain和Path是否与当前网站匹配。HTTPS 与 Cookie 安全属性冲突
你的配置中启用了HTTPS重定向,但如果Cookie的Secure属性设为true,而网站存在HTTP访问场景(比如DemoSite的HTTPS重定向逻辑),浏览器会拒绝保存Secure Cookie,导致登录状态无法持久。另外,新服务器HTTPS配置异常也可能导致Cookie无法标记为Secure,被浏览器限制。
生产环境确保Cookie的Secure属性为true,且网站全程通过HTTPS访问。服务器时间与客户端时间差异过大
新服务器系统时间与客户端时间偏差较大,会导致Cookie过期时间计算错误。比如服务器时间比客户端快很多,Cookie实际过期时间远早于预期,用户闲置几小时后就会被判定为登录失效。
检查服务器系统时间是否与标准时间同步。
内容的提问来源于stack exchange,提问作者Jonathan Wood

