2010-05-11 68 views
19

註銷我有一個控制器上的註銷動作像這樣:ASP.NET MVC真正與窗體身份驗證

public ActionResult Logoff() 
    { 
     var x = Request.IsAuthenticated; 
     var y = User.Identity.IsAuthenticated; 

     FormsAuthentication.SignOut(); 
     Session.Abandon(); 

     var a = Request.IsAuthenticated; 
     var b = User.Identity.IsAuthenticated; 

     return View(); 
    } 

然而,X,Y,A和B都是真實的。所以,當我的視圖呈現時,它仍然像用戶登錄一樣。有人可以提供解決方案和/或解釋嗎?

回答

42

FormsAuthentication.SignOut()除去身份驗證cookie,所以你需要重定向後,它代替了通知客戶端返回一個觀點:

public ActionResult Logoff() 
{ 
    FormsAuthentication.SignOut(); 
    return RedirectToAction("Index"); 
} 

現在在Index操作的用戶將不再進行認證。

+3

達林的權利。我有時做的是返回一個「返回重定向(FormsAuthentication.LoginUrl);」這將使用戶回到您在web.config中的身份驗證區域聲明的登錄頁面。同樣的事情真的... – 2010-05-11 16:32:51