2016-10-10 72 views
1

当我使用支票的登录验证码:登录尝试无效。登录身份ASP MVC

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
{ 

    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 
    var user = await UserManager.FindByEmailAsync(model.Email); 
    if (user != null) 
    { 
     if (!await UserManager.IsEmailConfirmedAsync(user.Id)) 
     { 
      ViewBag.errorMessage = "You must have a confirmed email to log on."; 
      return View("Error"); 
     } 
    } 
    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); 
    } 
} 

当我登录告诉我这个错误:Invalid login attempt.但电子邮件和密码已存在。

此代码:

var user = await UserManager.FindByEmailAsync(model.Email); 

非空,但是这个代码是失败:

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

什么问题呢?如何解决这个问题?

+0

是密码是否正确? – user1666620

+0

是的。其正确的 – Kianoush

+0

这是针对所有用户帐户还是只针对一个特定用户帐户?所有用户均可使用 – user1666620

回答

4

如果您已经发现通过电子邮件的有效用户再使用发现用户的用户名进行登录。

//... 
var user = await UserManager.FindByEmailAsync(model.Email); 
if (user != null) { 
    if (!await UserManager.IsEmailConfirmedAsync(user.Id)) { 
     ViewBag.errorMessage = "You must have a confirmed email to log on."; 
     return View("Error"); 
    } 
} 
var result = await SignInManager.PasswordSignInAsync(user.Username, model.Password, model.RememberMe, shouldLockout: false); 
//... 
+0

我需要使用电子邮件登录 – Kianoush

+0

从技术上说,你是用电子邮件登录。您使用电子邮件查找用户帐户。然后使用该帐户的信息和提供的密码登录。这就是我如何使用Identity登录我的用户。 – Nkosi

+0

好的。谢谢你,兄弟 – Kianoush