2010-05-11 13 views
19

साथ लॉग ऑफ मैं इतना के रूप में एक नियंत्रक पर एक logoff कार्रवाई: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(); 
    } 

हालांकि, एक्स, वाई, एक, और ख, सभी सही हैं। तो जब मेरा विचार प्रस्तुत करता है, तब भी यह व्यवहार करता है जैसे कि उपयोगकर्ता लॉग इन है। क्या कोई कृपया समाधान और/या स्पष्टीकरण प्रदान कर सकता है?

उत्तर

42

FormsAuthentication.SignOut() प्रमाणीकरण कुकी निकाल देता है, तो आप इसे बाद एक दृश्य के लौटने ताकि ग्राहक अधिसूचित किया गया है के बजाय रीडायरेक्ट करना होगा:

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

अब Index कार्रवाई में उपयोगकर्ता अब प्रमाणीकृत किया जाएगा।

+3

डारिन का अधिकार। मैं कई बार क्या करता हूं "रिटर्न रीडायरेक्ट (फॉर्म प्रमाणीकरण.लोगिन यूआरएल);" यह उपयोगकर्ता को आपके web.config में प्रमाणीकरण क्षेत्र में घोषित लॉगिन पेज पर वापस भेज देगा। वास्तव में वही बात ... –