2012-06-11 3 views
0

Im используя этот код, чтобы сделать LOGOFFПочему выход из системы работает только локально, но не на сервере

public ActionResult LogOff() 
    { 

     FormsAuthentication.SignOut(); 

     // Drop all the information held in the session 
     Session.Clear(); 
     Session.Abandon(); 

     // clear authentication cookie 
     HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, ""); 
     cookie1.Expires = DateTime.Now.AddYears(-1); 
     Response.Cookies.Add(cookie1); 

     // clear session cookie 
     HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", ""); 
     cookie2.Expires = DateTime.Now.AddYears(-1); 
     Response.Cookies.Add(cookie2); 
     foreach (var cookie in Request.Cookies.AllKeys) 
     { 
      Request.Cookies.Remove(cookie); 
     } 

     return RedirectToAction("Index", "Home"); 

    } 

и его прекрасно работают местные, но когда я публикую мое приложение на сервере, даже если пользователь уже выходе из системы, страница показывается, если пользователь нажимает кнопку браузера Back.

+0

Почему это не работает? Что происходит? – SLaks

+0

'Request.Cookies.Remove()' бесполезно. – SLaks

+0

'Request.Cookies.Remove' не делает то, что вы думаете. – vcsjones

ответ

0

Я ожидаю, что вы просто увидите кешированную версию страницы.

Если вы нажмете CTRL + F5, он попросит вас снова войти в систему?

Если вы ДЕЙСТВИТЕЛЬНО хотите отключить это, см. this answer, предоставленный MiBu, чтобы предотвратить кеширование защищенной страницы.