登录尝试无效。当登录身份asp mvc时

时间:2016-10-10 10:38:24

标签: c# asp.net-mvc asp.net-identity asp.net-identity-2

我使用此代码进行检查登录:

[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);

不为null,但此代码为失败:

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

问题是什么?怎么解决这个问题?

       

1 个答案:

答案 0 :(得分: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);
//...