我有一个带有IIS 7的ASP.NET Web服务器。
我的身份验证代码(表单身份验证)在登录页面上如下所示:
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;
}
我的问题是,如果我和我的一位同事同时使用不同的登录名(和不同的帐户)登录,则帐户设置为OK(我们看到不同的项目),但其中一个名称设置为另一个登录用户。
因此,如果我使用用户名foo
登录,而我的同事使用用户名bar
,我们都将使用各自的帐户登录,但要么我会在页面上看到用户名bar
foo
我看到了一些关于ASP.NET身份验证奇怪行为的其他描述,他们声称通过禁用输出缓存功能已经修复了这种行为。这对我不起作用。
感谢您的帮助,我不知道如何追踪这个问题。