2013-12-20 5 views
3

Я пытаюсь выйти пользователь, когда объект сеанса не существует с следующим кодом на моем взгляде:Как выписать пользователя в asp.net MVC 5?

FormsAuthentication.SignOut(); 

Но это не работает - пользователь уже аутентифицирован.

Я видел, что по умолчанию LogOff Controller Действие использовать этот код для SignOut пользователя:

AuthenticationManager.SignOut(); 

Но я не могу использовать этот код на мой взгляд.

Так как я могу выйти из системы в моем представлении? Или когда это невозможно, как я могу это сделать в контроллере?

Спасибо за помощь :)

+0

Необходимо просто вызвать действие LogOff по умолчанию (или копию). Это может быть вызов javasript или фактическая ссылка 'a'. – Jared

+0

Когда я называю это в своем контроллере «RedirectToAction» («LogOff», «Account»); поэтому мой пользователь полностью аутентифицирован. –

+1

Вы продолжаете говорить ... пользователь уже аутентифицирован. Что это значит? Конечно, они есть, вы хотите «неавторизовать» их. Кроме того, этот код не будет «отмечен» вашим кодом до тех пор, пока пользователь не сделает новый запрос. Значение, если вы вызываете 'AuthenticationManager.SignOut();', а на следующей строке - 'User.Identity.IsAuthenticated;' - он по-прежнему будет отображаться true. – Tommy

ответ

3

Вы бы делать это в контроллере, например, в отдельном действии, как LogOut(). После того, как вы выполнили свой выход из системы, перенаправьте пользователя на первую страницу (например).

Затем вы просто связываете это действие.

Вид не место, где можно содержать ничего, кроме чисто простой презентационной логики, например if или for. Контроллеры должны позаботиться о поведении приложения, например о выходе из системы.

+0

Я предположил что-то вроде этого, но как это сделать, когда эта функция «FormsAuthentication.SignOut()» не работает и с этой функцией «AuthenticationManager.SignOut()» Я получаю сообщение об ошибке, которое AuthenticationManager не включает в себя реализацию для эта функция? –

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