目前,在使用内置asp.net成员资格提供程序对用户进行身份验证时,我遇到了安全问题。
问题是:我使用用户AAA进行身份验证,之后,我在不同计算机上对用户BBB执行相同操作。验证用户BBB并调用
时HttpContext.Current.User.Identity
在AAA的计算机上,它将返回BBB的凭证。这是我的代码:public void SignIn(string UserEmail, decimal UserProviderId, bool CreatePersistentCookie)
{
string userName = "";
bool validUser = _acctMembership.ValidateUser(UserEmail, UserProviderId, out userName, out _userId);
if (validUser)
{
string name = userName + ";" + UserEmail; _formAuth.SignIn(name, CreatePersistentCookie);
}
else
{
throw new System.Security.Authentication.InvalidCredentialException("Invalid Email or Password");
}
}
结论:
最后记录的用户会覆盖之前记录的用户的身份。
有谁能告诉我如何解决这个问题?
答案 0 :(得分:0)
您正在使用 UserEmail 验证用户,但使用名为 name 的其他值创建 FormAuhtenicationTicket 。
bool validUser = _acctMembership.ValidateUser(XXXXX, UserProviderId, out userName, out _userId);
if (validUser)
{
string name = userName + ";" + UserEmail;
_formAuth.SignIn(XXXXX, CreatePersistentCookie);
}
上述代码中的XXXXX必须相同。