2010-05-11 28 views
19

Tôi có một hành động logoff trên một bộ điều khiển như vậy:ASP.NET MVC thực sự log off với hình thức xác thực

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(); 
    } 

Tuy nhiên, x, y, a, b, tất cả đều đúng. Vì vậy, khi chế độ xem của tôi hiển thị, nó vẫn hoạt động như thể người dùng đã đăng nhập. Ai đó có thể vui lòng cung cấp giải pháp và/hoặc giải thích không?

Trả lời

42

FormsAuthentication.SignOut() loại bỏ các cookie xác thực, vì vậy bạn cần phải chuyển hướng sau khi nó thay vì trả lại một cái nhìn để khách hàng được thông báo:

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

Bây giờ trong hành động Index người dùng sẽ không còn được chứng thực.

+3

Quyền của Darin. Đôi khi, những gì tôi làm là trả lại "Chuyển hướng trả lại (FormsAuthentication.LoginUrl);" Điều đó sẽ đưa người dùng trở lại trang đăng nhập mà bạn khai báo trong khu vực xác thực trong web.config của bạn. Điều tương tự thực sự ... –

Các vấn đề liên quan