2010-08-22 70 views
4

我有一个asp.net应用程序,似乎忘记了用户登录后不久。什么可能导致asp.net应用程序忘记用户?

我正在使用成员资格提供程序,当选择“记住”日志时,它会在会话期间记住它。我甚至可以关闭浏览器,重新启动并回来,它仍然会登录。但过了一段时间它就会忘记,它似乎在任何时候都会这样做。我曾经登录过,当我去到一个新的页面时,它被注销。

其他奇怪的事情是:

  1. 在我的机器它会记住在日志中,直到永远。即使在IIS重新启动并重新编译后,它也会按预期记住我的登录。
  2. 我有另一个应用程序在同一台服务器上,永远记住登录。我比较了他们如何处理登录,他们似乎是相同的。

这使我相信这个问题与服务器有关,也可能与应用程序中与登录和成员代码没有直接关系的东西有关。我可以看什么?

编辑: 使用Fiddler查看cookie,他们似乎没问题。 今天创建身份验证cookie过期从现在开始2周,这是我的配置是如何设置的: 到期=周一,06月2010年1时47分51秒GMT

编辑: 这个问题似乎是,应用程序池正在循环使用,并且身份验证cookie变得无效,因为机器密钥已更改,无法再读取它。解决方案是将machineKey段添加到web.config并提供静态机器密钥。

+2

太多龙舌兰酒? – 2010-08-22 20:11:13

+0

记住我的功能是基于cookie。所以我会诊断cookie的生命周期。 – 2010-08-22 20:27:46

+0

我看了一下cookie,它的到期日期是2个星期。 – dtc 2010-08-23 02:05:39

回答

4

有两种主要可能性。

  1. Cookie过期。如果cookie过期/消失,则认为您已注销。

  2. Cookie无效。登录Cookie根据machineKey值进行加密。如果您未指定machineKey,则每次应用程序池启动(或回收)时都会重新生成一个新的。这意味着,与老的machineKey加密的任何登录cookie现在是无效的,你就不会被认为是记录。

查看一下循环设置在IIS应用程序池什么,看看是否有对应与您没有登录的时间。

+0

我检查了cookie过期并且似乎没问题(如预期的那样在2周内过期)。你写的第二项似乎可能是我所看到的。我想我应该做一些关于登录cookie和machinekey的阅读。 – dtc 2010-08-23 02:08:43

+0

Cookie无效似乎是原因。我在web.config中添加了一个静态的machineKey,它还没有忘记我的登录信息。 – dtc 2010-08-24 06:44:09

3

“记住我”功能是使用cookie完成的。 Cookie可以设置到期日期。您需要查看Cookie的设置方式(Fiddler对此很有帮助,您可以在Cookie设置时检查HTTP标头。)

+0

过期日期似乎没有问题。我正在研究另一个人提到的机器键和应用程序池回收。似乎是我所看到的,但不知道为什么一个应用程序会受到影响,另一个是好的。 – dtc 2010-08-23 03:23:02

相关问题