2010-08-22 86 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

相關問題