2013-03-14 4 views
0

Я использую следующий код, чтобы отключить браузер обратно проблему кнопку после выхода из системы с помощью asp.net MVC4.Browser Кнопка Назад Выпуск iasp.net MVC4

[OutputCache(NoStore = false, Duration = 0, VaryByParam = "None")] 
     public ActionResult Logout() 
     { 
      try 
      { 
       if (Session["username"] != null) 
       { 
        Session.Abandon(); 
        Session.Clear(); 
        Session.RemoveAll(); 
        Session["username"] = null; 
        Response.Cache.SetCacheability(HttpCacheability.NoCache); 
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); 
        Response.Cache.SetNoStore(); 
        return RedirectToAction("Index", "AdminPanel"); 
       } 

       return RedirectToAction("Error", "Home"); 
      } 
      catch (Exception e) 
      { 
       return RedirectToAction("Error", "Home"); 
      } 
     } 

Но есть одна проблема с этим кодом, полагая I» ve three page first - это страница входа в систему (Index.cshtml) и вторая успешно зарегистрировалась на странице (home.cshtml), а третья страница о странице (about.cshtml), теперь я вхожу в систему, тогда она перенаправит меня на страницу home.cshtml, теперь я перехожу на третью страницу about.cshtml, а после этого я сделать выход из страницы about.cshtml, он перенаправляет меня на страницу login.cshtml. И теперь, если я нажму кнопку браузера, то снова перенаправит меня на страницу about.cshtml, но пользователь не может ничего изменить или добавить. Так что дайте мне знать, есть ли подходящий код или метод для решения этой проблемы.

ответ

0

Если вы поместите это в методе контроллера, делающего about.cshtml, он будет работать, как вы описали:

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

Не совсем идеально, но ставит вас на правильном пути. В основном браузер кэширует about.cshtml с момента их входа в систему. Говорить, что метод выхода не кэшировать ответ, не делает многого, поскольку он выполняет перенаправление, а не рендер.

Смежные вопросы