0

目前,在使用内置 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");
    }
} 

结论:

最后登录的用户会覆盖之前登录的用户的身份。

谁能告诉我如何解决这个问题?

4

1 回答 1

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 必须相同。

于 2013-10-13T18:07:11.303 回答