2011-10-04 194 views

回答

4

+1闪耀的,看起来像它的工作,但我发现了一个更简单的方法。

在AccountModel.cs更改显示属性(文本框的登录页面上只是标签)

public class LogOnModel 
{ 
    [Required] 
    [Display(Name = "User name or Email Address")] 
    public string UserName { get; set; } 
    ... 

在AccountController.cs更改登录方法,看看用户名看起来像一个电子邮件地址,如果这样的话试图找到用户名从电子邮件地址。

[HttpPost] 
public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     // Can login by username or email address     
     MembershipUser user = null; 
     string userName; 

     if (model.UserName.Contains("@")) 
     { 
      // Could change model.userName from email to username but this will change form values 
      // if login fails (wrong pwd) which will be confusing to users, so keep in sep username string 
      userName = Membership.GetUserNameByEmail(model.UserName); 
      if (!String.IsNullOrEmpty(userName)) 
      { 
       user = Membership.GetUser(userName); 
      } 
     } 
     else 
     { 
      user = Membership.GetUser(model.UserName); 
      userName = model.UserName; 
     } 

     if (user != null && validateAndLogOnUser(userName, model.Password, model.RememberMe)) 
     { 
      // Rest of standard login code here 
+0

什么方法是validateAndLogOnUser? – Diin

相关问题