2017-10-30 1 views
0

Ich baute dot net Kern Web-App, aber Identität System erlaubt mir nicht zu loggen.Ich dachte, dass, wenn mein Benutzername und E-Mail-Adresse in der Datenbank wäre nicht das gleiche wird es nicht eingeloggt. Jeder weiß was los ist ??Login zu. Net Core App mit verschiedenen E-Mail und Benutzernamen

+0

Versuchen Sie, sich mit Ihrem Benutzernamen anstelle Ihrer E-Mail-Adresse anzumelden? Dann müssen Sie den Code in "AccountControler.Login" anpassen, um den Benutzer entweder per E-Mail oder nach Benutzername zu finden. – GeorgDangl

+0

ich meine ich baute eine dot net core web app mit individueller authentifizierung ausgewählt, ich änderte register Post registrieren aktion zu speichern benutzernamen etwas anderes als email.nach registrierung benutzer anmeldet, jeder körper glücklich aber wenn benutzer abmelden und versuchen, mit dem einloggen Das gleiche Credential wieder, dass würde fehlschlagen – EHSAN

+0

Können Sie die Antwort mit Ihren beiden "Register" und "Login" -Methoden aktualisieren? – GeorgDangl

Antwort

0

Ich bin mir nicht sicher, ob ich deine Frage richtig verstanden, aber die folgenden Login-Methode auf einem Konto Controller ermöglicht Anmeldungen entweder mit dem Benutzernamen und dem Passwort:

[AllowAnonymous] 
[HttpPost("login")] 
public async Task<IActionResult> LoginAsync([FromBody]LoginPost model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(); 
    } 
    // The user is identified either by Email or by Username 
    var user = await _userManager.FindByEmailAsync(model.Identifier) 
      ?? await _userManager.FindByNameAsync(model.Identifier); 
    if (user == null) 
    { 
     return Unauthorized(); 
    } 
    var signInResult = await _signInManager.PasswordSignInAsync(user, model.Password, true, false); 
    if (signInResult.Succeeded) 
    { 
     return NoContent(); 
    } 
    return Unauthorized(); 
} 

Bitte beachten Sie die Zeile, in der der Benutzer im Backstore nachgeschlagen: FindByEmail() ?? FindByUsername. Damit können Sie sich entweder mit username/password oder email/password anmelden.

Verwandte Themen