У меня есть проект MVC 3, который аутентифицирует пользователей с помощью аутентификации с помощью форм.
Чтобы получить доступ к различной информации пользователя, когда это необходимо после аутентификации, я реализовал простой класс:
public class ComplexUserData
{
public static string complexAccountName;
public static string complexRole;
...
...
}
При каждом запросе страницы контроллер смотрит на этот объект и при необходимости заполняет данные для свойств.
С другой стороны:
Процесс входа в систему выглядит следующим образом:
- Запрашивается страница входа в систему
- Перед возвратом LogOn View контроллер проверяет, не равно ли
HttpContext.User.Identity.Name
null - Если он не равен нулю, найдите пользователя с этим именем пользователя и перенаправьте его на правильную целевую страницу.
- В противном случае верните страницу входа в систему
И процесс выхода из системы выглядит следующим образом:
FormsAuthentication.SignOut ();
Session.Abandon ();
HttpCookie cookie1 = новый HttpCookie (FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears (-1); Response.Cookies.Add (cookie1);
HttpCookie cookie2 = новый HttpCookie ("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears (-1);
Response.Cookies.Add (cookie2);
Перенаправить на LogOn
На моей главной странице я использую SessionData.complexAccountName
на верхней панели. Все в порядке до пользовательского тестирования.
Пользователь A говорит, что после того, как он оставил страницу на некоторое время бездействующей, а затем вышел из системы, сайт вернется на главную страницу с отображением пользователя B на верхней панели. В то же время пользователь B сделал то же самое и увидел пользователя A на верхней панели.
Поэтому я предполагаю, что когда пользователи выходят из системы и перенаправляются на страницу входа в систему, как указывает процесс, контроллер проверяет HttpContext.User.Identity.Name
, и хотя он должен быть нулевым, это не так! На самом деле он содержит имя другого пользователя!
Что я делаю не так, почему система ведет себя странно.
Заранее спасибо и с наилучшими пожеланиями.