2016-10-10 5 views
1

ich mit diesen Code für den Check Login:Ungültiger Anmeldeversuch. wenn anmelden Identität 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); 
    } 
} 

, wenn ich zeigen, melden Sie mir diesen Fehler: Invalid login attempt. aber E-Mail und Passwort hat existieren.

Dieser Code:

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

nicht null, aber dieser Code Fehler:

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

was ist das Problem? Wie löst man dieses Problem?

+0

ist das Passwort korrekt? – user1666620

+0

ja. seine korrekte – Kianoush

+0

Ist dies für alle Benutzerkonten oder nur für ein bestimmtes Benutzerkonto möglich? – user1666620

Antwort

4

Wenn Sie bereits einen gültigen per E-Mail gefunden haben dann den Benutzernamen des Benutzers gefunden für die Anmeldung verwenden.

//... 
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

Ich brauche die E-Mail für Login verwenden – Kianoush

+0

technisch Sie sind mit E-Mail-Anmeldung. Sie haben die E-Mail verwendet, um das Benutzerkonto zu finden. und dann die Informationen dieses Kontos zusammen mit dem angegebenen Passwort verwendet, um sich anzumelden. So benutze ich Identität, um meine Benutzer anzumelden. – Nkosi

+0

ok. Danke mann – Kianoush

Verwandte Themen