2011-10-04 242 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

相關問題