2009-09-10 97 views
0

我正在嘗試使用forms.signout,但有時它不會註銷用戶,他仍然可以通過網站進行登錄。ASP.NET MVC FormsAuthentication.SignOut不起作用

我該如何解決這個問題?我還配置了web.config表單身份驗證,但它仍然無法正常工作。

我正在使用FormsAuthentication來驗證用戶是否通過他的登錄。

謝謝!

回答

1

我不知道是什麼原因,但你可能會考慮一些事情/嘗試

  • 是他們居然能仍然參觀由服務器生成的頁面或者他們只是要回本地緩存版本?當他們導致一個有代碼檢查他們是否通過驗證的回傳時,會發生什麼情況,還是會失敗?我認爲他們退出後的含義,但查看登錄頁面的緩存版本,在這種情況下,您希望指示客戶端不要緩存使用實例的頁面:

    Response.Cache.SetExpires(DateTime.UtcNow。 AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore();

  • 你可以嘗試手動設置爲過期餅乾,但是這是一個黑客

    FormsAuthentication.SignOut(); Context.Response.Cookies.Item(FormsAuthentication.FormsCookieName).Expires = Date.Now; Response.Redirect(「〜/ Somewhere.aspx」);

+0

例如,網站有一個只有在用戶通過身份驗證時才顯示的菜單菜單。我還有一個Request.IsAuthenticated來生成一些受限制的內容(如菜單)。當用戶註銷時,菜單有時仍然可見。如果我嘗試訪問限制頁面,我將重定向到登錄頁面,但我認爲不太好看這個緩存的內容,例如菜單。 – AndreMiranda 2009-09-10 00:49:26

0

用戶是否在其受信任的站點或Intranet站點中具有域(或父域)?我最近遇到了一些用戶身份驗證問題,但在這種情況下是匿名的。在我的情況下,它也可能是一個父站點曾經被配置爲允許Windows集成身份驗證。我已經刪除了,但它似乎沒有幫助解決這個問題。我還沒有重新啓動IIS以查看這是否會產生影響。我已經訴諸檢查用戶是否經過身份驗證和非匿名,以確保呈現適當的視圖部分。這實際上更準確,即使我的登錄代碼應該阻止匿名登錄。

+0

@tvanfosson - 如何檢查用戶是否是非匿名用戶? – AndreMiranda 2009-09-10 10:19:14

+0

Request.LoginUserIdentity.IsAnonymous應該是false。 – tvanfosson 2009-09-10 11:14:14

相關問題