У меня есть веб-сервер ASP.NET с IIS 7.
Мой код аутентификации (проверка подлинности с помощью форм) выглядит следующим образом на странице входа в систему:
var isAuthenticated = Membership.ValidateUser(usernameTextBox.Text, passwordTextBox.Text);
if (isAuthenticated)
{
FormsAuthentication.RedirectFromLoginPage(usernameTextBox.Text, true);
}
else
{
var customValidator = new CustomValidator();
customValidator.IsValid = false;
customValidator.ErrorMessage = GetLocalResourceObject("LoginFailed.ErrorMessage").ToString();
customValidator.ValidationGroup = "AllValidators";
Page.Validators.Add(customValidator);
}
И на другой страницеЯ отображаю имя пользователя:
if (HttpContext.Current.User.Identity != null &&
!string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
{
string authenticatedUsername = HttpContext.Current.User.Identity.Name;
return "authenticatedUsername=" + authenticatedUsername;
}
else
{
return null;
}
Моя проблема в том, что если я и один из моих коллег войдем в систему одновременно с разными именами входа (и разными учетными записями), учетные записи будут установлены в порядке (мы видим разные элементы).) но одно из имен настроено на другое, вошедшее в систему пользователя.
Так что, если я войду с именем пользователя foo
и моим коллегой с именем пользователя bar
, мы оба войдем в систему с нашими соответствующими учетными записями, нолибо я увижу имя пользователя bar
, либо он увидит мое имя пользователя foo
на странице.
Я видел некоторые другие сообщения о странном поведении аутентификации ASP.NET, и они утверждали, что это былоисправлено отключением функции кэша вывода.Это не сработало для меня.
Любая помощь приветствуется, я понятия не имею, как отследить проблему.