2016-12-31 102 views
0

我目前正在更改MVC5項目的默認模板(帶標識)。當我第一次註冊並登錄時,一切順利。但是,當我在默認級別將用戶名稱作爲電子郵件進行某些更改(如項目)時。但是當我改變它來存儲來自Form的UserName時,它會給出'無效'的登錄嘗試。誰能告訴我,我哪裏出錯了。要麼我必須在其他地方進行更改,如果是,那麼在哪裏?MVC中的登錄嘗試無效

這裏是我的寄存器功能:

前:

var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 

我已經改變了此行這樣的:

var user = new ApplicationUser { UserName = model.usrName, Email = model.Email , PhoneNumber=model.Contact}; 

我的登錄功能是因爲它有默認值。像,

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     // This doesn't count login failures towards account lockout 
     // To enable password failures to trigger account lockout, change to shouldLockout: true 
     var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
     switch (result) 
     { 
      case SignInStatus.Success: 
       return RedirectToLocal(returnUrl); 
      case SignInStatus.LockedOut: 
       return View("Lockout"); 
      case SignInStatus.RequiresVerification: 
       return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 
      case SignInStatus.Failure: 
      default: 
       ModelState.AddModelError("", "Invalid login attempt."); 
       return View(model); 
     } 
    } 

現在,有人可以告訴我,我錯了嗎?

回答

0

如果要將用戶名從model.Email更改爲model.usrName,則必須在登錄功能中使用model.usrName。就像這樣:

var result = await SignInManager.PasswordSignInAsync(model.usrName, model.Password, model.RememberMe, shouldLockout: false); 

因爲UserNamePassword字段登錄默認的唯一參數。所以它想用UserName字段完成登錄操作。

+0

不,我想從電子郵件登錄。但在註冊後添加userName後。它不會從電子郵件登錄。 – maadi