2013-06-05 2 views
0

Когда пользователь нажимает «Выход», следующее (стандартное) действие успешно называется:MVC 4: Выход и браузер «Back» -Функция

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult LogOff() 
    { 
     WebSecurity.Logout(); 

     return RedirectToAction("Login", "Account"); 
    } 

Пользователь перенаправляется на страницу входа.

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

Есть ли способ предотвратить доступ зарегистрированного пользователя к пользователю, нажав «Назад» в браузере? Каждый из моих контроллеров уже имеет атрибут [Авторизовать]. Спасибо за ваш вклад!

+0

Не допускайте кеширование авторизованных страниц. На эту тему больше вопросов, попробуйте найти. – CodeCaster

+0

[Этот вопрос] (http://stackoverflow.com/questions/16337149/how-to-clear-browser-cache-on-browser-back-button-click-in-mvc4) Я несколько схожу и могу вам помочь. – Niklas

ответ

2

Реалистично, нет, так как то, что они видят это в кэше версия страницы в браузере. Вы могли бы, я полагаю, попытаться поймать событие back-navigation с помощью JavaScript, но я склоняюсь к тому, что эта практика очень раздражает, и это не так уж сложно обойти.

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

1

Да, вы можете сделать это

Вам нужно добавить небольшой яваскрипт функции в главной странице или на страницу .aspx в соответствии с вашими потребностями.

<script type="text/javascript"> 
    window.history.forward(); 
    function noBack() { window.history.forward(); } 
</script> 

и на странице тела вы можете добавить

<body onload="noBack();" onpageshow="if (event.persisted) noBack();" onunload=""> 

Если пользователь нажимает кнопку на странице Назад, он будет отправлен на текущей странице. поскольку код history.forward возвращает пользователя на текущую страницу. Таким образом, пользователь не сможет вернуться.

Надеюсь, это поможет.

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