我有一个asp.net应用程序似乎忘记了用户在一段时间后登录。
我正在使用会员提供商,当选择“记住”登录时,它会在会话期间记住它。我甚至可以关闭浏览器,重新启动并返回它仍然会登录。但过了一段时间它会忘记它似乎在任何过去的时间都会这样做。我曾经登录过,当我进入新页面时,它已被注销。
其他奇怪的事情是:
这让我相信这个问题与服务器有关,或者应用程序中的某些东西与登录名和会员代码没有直接关系。我能看到什么?
编辑: 使用Fiddler查找cookie并且它们似乎没问题。 今天创建的身份验证cookie将在2周后到期,这是我的配置设置方式: expires =周一,06-Sep-2010 01:47:51 GMT
编辑: 问题似乎是应用程序池正在回收,并且身份验证cookie变得无效,因为在机器密钥已更改时无法再读取它。解决方案是将machineKey段添加到web.config并提供静态机器密钥。
答案 0 :(得分:4)
有两种主要的可能性。
Cookie过期。如果cookie过期/消失,那么您将被视为已退出。
Cookie失效。登录cookie根据machineKey值加密。如果未指定machineKey,则每次应用程序池启动(或循环使用)时都会重新生成一个新计算机。这意味着使用旧machineKey加密的任何登录cookie现在都无效,您将不会被视为已登录。
检查IIS中应用程序池上的回收设置,看看它是否与您未登录的时间相对应。
答案 1 :(得分:3)
“记住我”功能是使用cookie完成的。 Cookie可以设置到期日期。您需要了解如何设置cookie(Fiddler对此有好处,您可以在设置cookie时检查HTTP标头。)