2015-02-21 2 views
34

Я использую базовый вход на тестовый сайт ASP.Net MVC 5 (для интернет-сайта).ASP.Net MVC 5 w/identity 2.2.0 Выход из системы не работает

Вход в систему работает нормально, но когда я пытаюсь выйти из системы, этого не происходит. Ссылка выхода из системы делает вызвать следующие действия контроллера:

public ActionResult LogOff() 
{ 
    AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "Home"); 
} 

Но пользователь остается зарегистрированным в разделе Как убедиться, что пользователь фактически получает из системы.?

+0

Может быть связано с этим http://stackoverflow.com/questions/28263095/logout-functionality-not-working-with-asp-net-identity – janhartmann

ответ

49

Я имел эту проблему до того, изменения:

AuthenticationManager.SignOut(); 

To:

AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 

Предполагая, что вы используете ApplicationCookie хранить свою регистрационную информацию.

+2

Спасибо за работу. Небольшое примечание: оно должно быть 'AuthenticationManager' (за автоматически сгенерированный код), а не' Authentication'. –

+0

На самом деле он не выходит из системы со стороны сервера. https://stackoverflow.com/questions/24552448/web-api-2-owin-authentication-signout-doesnt-logout –

+0

@JeevaJsb Этот вопрос касается токенов-носителей, которые полностью отличаются от файлов cookie. –

-4

У меня была та же проблема, что и не в состоянии выйти из системы. Я остаюсь включенным и только перенаправляюсь обратно к домашнему виду. Я использовал Chrome, и я попробовал его в firefox и, следовательно, не имел проблемы. Затем я очистил свои куки в хроме, и все сработало нормально. Это может быть быстрый и простой первый шаг, если другие столкнутся с этой проблемой.

+2

Мы столкнулись с той же проблемой с наше приложение после обновления от AspNet.Identity 2.0.1 до 2.2.0. Очистка файлов cookie действительно подписала пользователя, но это было не очень практичное решение. Мы приняли исправление в принятом ответе и решили проблему для нас. – Avalanchis

2

Лучший способ:

public ActionResult Logout() 
{ 
    SignInManager.AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "support", new { area = "" }); 
} 

или вы можете использовать инъекции SignInManager в контроллер, как это:

public ActionResult Logout() 
{ 
    _signInManager.AuthenticationManager.SignOut(); 
    return RedirectToAction("Index", "support", new { area = "" }); 
} 

нет почтения.

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