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

ASP.NET MVC认证Cookie自动登出问题求助

ASP.NET MVC Forms认证Cookie频繁过期排查方案
  • 验证requireSSL配置的影响
    web.config中设置了requireSSL="true",若生产环境未配置HTTPS,浏览器会拒绝保存RememberMe=true时的持久化Cookie。先确认服务器是否正确配置SSL证书,确保所有请求走HTTPS;临时测试可将requireSSL改为false,观察是否仍频繁登出。

  • 检查机器密钥(MachineKey)配置
    生产环境若为多服务器部署或应用池频繁回收,未固定MachineKey会导致加密Cookie无法正确解密,触发登出。在web.config的<system.web>节点下添加固定密钥:

    <machineKey validationKey="生成的随机密钥" decryptionKey="生成的随机密钥" validation="SHA1" decryption="AES" />
    

    密钥可通过工具生成,注意保密。

  • 确认Cookie实际过期时间
    打开浏览器开发者工具(F12)的Application/Storage标签,找到LightOilManager Cookie,查看Expires/Max-Age值。若RememberMe=true但Cookie仍为会话级(关闭浏览器即过期),检查login.RememberMe是否正确传值(比如前端表单是否绑定该字段)。

  • 排查应用池回收与会话状态
    检查Plesk应用池回收设置,是否存在固定时间回收、内存阈值过低导致频繁回收的情况。应用池回收会重置Session,若代码依赖Session逻辑,可能间接引发登出。若使用InProc会话模式,建议改用StateServer或SQLServer模式(需Session支持时)。

  • 检查Cookie路径与域配置
    当前<forms>节点未设置path和domain,默认路径为/,但网站有虚拟目录或子域名时,可能导致Cookie无法正确传递。可显式配置:

    <forms name="LightOilManager" loginUrl="/Customer/Home/Login" defaultUrl="/" timeout="43200" requireSSL="true" path="/" domain="你的域名" />
    
  • 验证timeout参数实际生效
    timeout="43200"对应30天,属于正常范围。Forms认证默认滑动过期,用户活跃会刷新超时时间。检查代码中是否手动设置Cookie过期时间,或其他地方覆盖了认证配置。

内容的提问来源于stack exchange,提问作者Milad-PC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:54:58