Как отключить кнопку возврата в браузере при выходе пользователя из asp.net с #

Наша проблема в том, что мы можем очистить сеанс при выходе из системы.

Но если пользователь нажимает кнопку «Назад», он может просмотреть все предыдущие экраны.

Но преимущество состоит в том, что одним щелчком на любой из таких ранее просматриваемых страниц, мы возвращаем пользователя на страницу входа в систему, что мы и сделали. Но наше требование состоит в том, что мы не должны позволять пользователю переходить на предыдущую страницу просмотра.

Ответов (7)

напишите этот код на главной странице в событии загрузки страницы

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

и напишите этот код на странице входа в раздел заголовка

<script type="text/javascript">
window.history.forward(-1);
</script> 

Более ранний вариант того же вопроса / ответа:

Есть ли способ предотвратить отображение страницы после того, как человек вышел из системы, но нажал кнопку «назад»

Вам нужно принудительно истечь срок действия кеша, чтобы это работало. Я ищу для вас образец кода.

РЕДАКТИРОВАТЬ
Нашел это для вас, это уже было рассмотрено здесь, на SO.

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

Здесь...

Для страниц ASP.NET вы можете использовать Response.CacheControl для управления хранением страницы в кэше пользователей. Другие языки веб-разработки будут использовать нечто подобное.

Вы можете использовать стиль Outlook Web Access и просто заставить JavaScript закрыть текущее окно / вкладку.

Кроме того, вы можете убедиться, что ваша страница «выхода» является постбэком. Это заставит пользователя, нажимающего кнопку «Назад» в большинстве браузеров, повторить попытку обратной передачи, после чего вы сможете обнаружить, что они больше не вошли в систему, и перенаправить их обратно на страницу входа.

Изменить: кто-то еще упомянул Response.Redirect. На самом деле вы можете сделать так, чтобы ваша ссылка «выхода» переходила на страницу, которая выполняет перенаправление, и ВСЕГДА перенаправляет на вторую «целевую страницу». Если пользователь нажимает «Назад», он снова перейдет на перенаправление и вернет их туда, где они начали.

Невозможно предотвратить историю браузера, поэтому важно использовать несколько методов вместе и не планировать, чтобы пользователь «не возвращался назад», чтобы обеспечить безопасность вашего приложения.

Вы не можете "отключить" кнопку возврата. Я видел множество «трюков», которые могут очистить заднюю историю, но они ненадежны и не работают от браузера к браузеру или даже от версии браузера к версии браузера.

Как говорили другие, правильный метод - это сделать кеш недействительным, а также проверить на стороне сервера, что сеанс больше не действителен, если они попытаются повторно отправить данные. Кроме того, Response.Redirect работает лучше, чем обратная передача, поскольку это вызывает получение, а не публикацию.

Это решение, которое я нашел в Coding Solutions

на главной странице

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ClearHeaders();
        Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
        Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
        Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
        Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
        Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
    }

Контроль LoginStatus

    protected void LoginStatusUser_LoggedOut(object sender, EventArgs e)
    {
        Session.Abandon();
        FormsAuthentication.SignOut();
    }