2012-05-15 47 views
0

有時,如果用戶單擊後退按鈕,然後選擇另一個鏈接,而不是應顯示的內容,則會顯示登錄屏幕。這就像應用程序突然認爲用戶未通過身份驗證。用戶必須重新進行身份驗證才能繼續瀏覽。這種情況發生在用戶正在瀏覽時,所以不應該發生超時,並且在驗證之後,會顯示內容(所以這不是授權問題)。如果用戶使用後退按鈕,則有時會出現登錄屏幕,然後單擊鏈接

不幸的是,這個問題很難重現。最常遇到問題的用戶是使用帶有IE 7的Windows XP,但問題也出現在Windows XP和IE 8中。我似乎無法在IE 7或Chrome 18上重現Windows 7上的問題,但由於問題難以重現,我不能自信地說問題在於瀏覽器或瀏覽器版本。

我們的ASP.NET MVC 3應用程序使用表單身份驗證以及存儲在SQL Server數據庫中的角色信息以及Active Directory中的成員資格信息。主機環境是Windows 2008 R2上的IIS 7.5。

有沒有其他人看到這個問題,並知道一個解決方法?

回答

0

在服務器上,我猜你正在使用自定義IPrincipal,你需要重新附加到請求線程爲每個請求?你在HTTPModule或global.asax中執行此操作嗎?您正在使用哪個頁面事件來授權該線程?

我注意到根據我使用的事件,在不同的運行環境中可以使用身份驗證的差異。我現在總是使用OnAuthorizeRequest並檢查application.Context.User!= null。

但是您描述的症狀聽起來更像是間歇性地從請求中缺少授權cookie。

爲每個請求添加一些調試日誌記錄,並監視cookie和授權以查看是否可以檢測到導致它的條件。

相關問題