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

.NET 7 IIS站点Cookie认证在应用回收/重启时丢失状态排查

问题分析与解决方案

这是典型的XY问题——你之前做的所有配置操作都和当前用户回收后被登出的问题无关。

根据.NET官方文档说明,单服务器部署的Cookie认证站点,无需额外配置数据保护即可在应用重启/回收后保留用户Cookie。因为Cookie本身存储在客户端,只要服务端的签名密钥未丢失(单服务器场景下.NET默认会自动持久化密钥),重启后就能正常验证Cookie的有效性,不会导致用户强制登出。

你遇到的实际问题根源在于:

  • 自定义代码中使用了静态引用存储用户数据,并且在权限检查逻辑中依赖这个静态引用
  • 应用回收后,静态变量会被重置清空,且你的代码没有在请求时重新从认证票据中加载用户信息,导致权限检查失败,最终表现为用户被“强制登出”

解决建议

  • 移除用于存储用户信息的静态变量,改为在每次权限检查时直接从HttpContext.User中读取当前用户的身份与权限数据
  • 如果需要缓存用户数据以提升性能,使用IDistributedCache或非静态的内存缓存实现,避免依赖静态变量的生命周期
  • 检查自定义权限验证逻辑,确保每次请求都能从Cookie认证票据中重新解析用户信息,而非依赖预加载的静态数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:07:28