解决方法
您可以从SimpleMembershipProvider继承,只需覆盖ValidateUser方法。
public class ExtendedSimpleMembershipProvider : SimpleMembershipProvider { public override bool ValidateUser(string login,string password) { // check to see if the login passed is an email address if (IsValidEmail(login)) { string actualUsername = base.GetUserNameByEmail(login); return base.ValidateUser(actualUsername,password); } else { return base.ValidateUser(login,password); } } bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn,@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } }
这只是一种方法。您可以编写自己的MembershipProvider,但如果您只需要更改ValidateUser方法,这应该可以工作。
将以下配置添加到web.config中以设置提供程序。
<membership defaultProvider="ExtendedSimpleMembershipProvider"> <providers> <clear/> <add name="ExtendedSimpleMembershipProvider" type="MyProject.Web.SimpleMembershipProvider,MyProject.Web"/> </providers> </membership>
这应该让你走正确的方向。