ASP.NET登录控件,用电子邮件登录但电子邮件不是用户名(如何)?

Zac*_*ott 3 c# asp.net authentication

使用ASP.NET表单身份验证,您将如何接受电子邮件地址和密码,使用电子邮件地址查找用户名,然后使用查找的用户名和密码登录?

我们有这个卡系统,有员工编号,但没有人能记住他们的号码.显而易见的是使用登录的电子邮件地址,但应用程序的其余部分取决于用户名是员工编号.

谢谢.代码链接/示例会很棒.

我们当前的C#解决方案以以下引用异常结束:

Response.Write(Membership.GetUser().UserName);

但这两个都很好:

string userName = Membership.GetUserNameByEmail(emailAddress);
bool successfulLogin = Membership.ValidateUser(userName, password);

Bre*_*itz 10

不要更改现有的登录控件,只需覆盖"Authenticate"事件即可执行新的自定义逻辑.另外,FormsAuthentication.SetAuthCookie()函数应该可以帮助您覆盖的用户名的问题.

我没有编译这个,但你应该明白这个想法:

private void OnAuthenticate(object sender, AuthenticateEventArgs e)
{
    bool successfulLogin = false;
    string userName = Membership.GetUserNameByEmail(Login1.UserName); //the email address
    successfulLogin = Membership.ValidateUser(userName, Login1.Password);

    if(successfulLogin)
      FormsAuthentication.SetAuthCookie(userName, true);

    e.Authenticated = successfulLogin;
}
Run Code Online (Sandbox Code Playgroud)