Выйти из MVC - PullRequest
       12

Выйти из MVC

1 голос
/ 23 декабря 2009

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

[ <a id="A2" name="lnkLogout" href="http://localhost:1234/Home/LogOut" >Logout</a> ]

и создал действие LoutOut на странице контроллера

 public ActionResult LogOut()
        {
            Session.Clear();
            Session.Abandon();
            Redirect("http://AnotherApplicaton/Home/LogOut");
        }

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

Ответы [ 4 ]

16 голосов
/ 23 декабря 2009

если вы используете аутентификацию по формам, то это то, что вы ищете ...

public ActionResult LogOut()
        {
            Session.Clear();
            FormsAuthentication.SignOut();
            Redirect("http://AnotherApplicaton/Home/LogOut");
        }

НТН

6 голосов
/ 23 декабря 2009

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

Существует множество способов предотвратить кэширование ваших страниц ASP.net в браузере. Один из таких способов - сделать это до отображения страницы.

this.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
this.Response.Cache.SetCacheability(HttpCacheability.NoCache)
this.Response.Cache.SetNoStore()
2 голосов
/ 23 декабря 2009

сеансы не жив; они просто кешируются.

Вы можете попробовать принудительно обновить страницу (ctrl + f5) и проверить это.

1 голос
/ 23 декабря 2009

Привет, есть решение. На самом деле я использовал toke для входа в мой модуль, и время ожидания токена составляло 5 секунд. Если я вышел из системы и нажал кнопку «Назад» браузера в течение 5 секунд, то снова вызывается событие Session_Start () из glowal.ascx.cs, снова считывается токен и снова создается сеанс. И если я нажимаю на кнопку «Назад» через 5 секунд, то сессия не создается. Для решения этой проблемы я не позволяю пользователю вернуться назад через браузер. Для этого я использовал следующий код

<script type="text/javascript">
history.go(1);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...