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

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

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

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

Ответ 1

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

ИЗМЕНИТЬ
Нашел это для вас, его уже рассмотрели здесь на SO.

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

Здесь...

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 7

Это решение, которое я нашел в Кодирующие решения

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

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