У меня проблема с входом и выходом пользователя из приложения MVC3.Вот пример моих действий по выходу из системы в моем пользовательском контроллере:
public ActionResult Logout()
{
FormsService.SignOut();
Session.Clear();
return RedirectToAction("index", "home");
}
Когда пользователь нажимает «Выйти», вызывается это действие, он очищает информацию о сеансе, а затем пользователь перенаправляется на страницу индекса.
На моей странице указателя я вызываю помощника C # для отображения такого сообщения:
@section links { @Html.HdrLinks("Home", "", Context.User) }
Вот часть кода помощника:
System.Security.Principal.IPrincipal user
if (user.Identity.IsAuthenticated)
{
return new MvcHtmlString("Welcome " + user.Identity.Name);
}
Моя проблема в том, чтокогда страница индекса отображается НЕМЕДЛЕННО ПОСЛЕ выхода из системы, она по-прежнему показывает ту же информацию о сеансе.Другими словами, он по-прежнему показывает сообщение «Добро пожаловать, Джон».Только ПОСЛЕ ТОГО, КАК я обновляю страницу в браузере, он правильно видит, что там нет имени пользователя в сеансе.
Есть ли у кого-нибудь идеи о том, что я могу сделать, чтобы после выхода из системы и перенаправления страница индекса все еще не думала, что пользователь вошел в систему?Например, есть ли какой-нибудь вызов, отличный от RedirecToAction, который я мог бы выполнить, который помог бы мне.
ОБНОВЛЕНИЕ:
Казалось бы, когда я изменяю свой код на следующий, он делает то, что я хочу, и когда он показывает страницу индекса, он не показывает, что я все ещевошел в систему. Однако я не уверен, почему это работает.
FormsService.SignOut();
Session.Clear();
Session.Abandon();
return new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "Index" }));