it-swarm.com.de

Wie melde ich mich mit "UserName" anstelle von "Email" in MVC Identity an?

Ich muss mein Login so einrichten, dass Benutzername anstelle der E-Mail-Adresse verwendet wird. Wie kann ich es ändern?

14
Kevin Maxwell

Die E-Mail-Adresse wird tatsächlich als Benutzername verwendet. In der Tabelle ASPNetUsers sehen Sie sowohl den Benutzernamen als auch die E-Mail-Felder mit der E-Mail-Adresse.

Gehen Sie in den AccountController und suchen Sie nach der POST-Methode. 

Ändere das:

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

zu diesem:

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

Gehen Sie dann in die Login.cshtml und ändern Sie stattdessen alle entsprechenden E-Mail-Modellfelder in Benutzername.

Gehen Sie schließlich in die Login-Methode (POST) im AccountController und ändern Sie model.Email in model.UserName.

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

Sie müssen auch Änderungen in AccountViewModels.cs vornehmen, um Ihre neue UserName-Eigenschaft einzuführen.

20
Jason Roner

So machen Sie es

 var user = await _userManager.Users
           .FirstOrDefaultAsync(u => u.UserName == username || u.Email == username); 
 if (user != null){
    var result = await _signInManager
                .PasswordSignInAsync(/*email*/user.Email, password, false, false);
    /*removed for brevity*/
 }

Stellen Sie sich vor, Sie haben einen Benutzer mit Benutzername = test und E-Mail = [email protected]. Dann möchten Sie Benutzern die Authentifizierung mit test anstelle von myemail @ ... `erlauben

PS. Während die Antwort von @ Jason funktioniert, möchten Sie manchmal einen Benutzer mit echtem Benutzernamen und Kennwort authentifizieren, ohne die E-Mail-Adresse zu verwenden.

In diesem Fall verwenden Sie meine Antwort

1
Bellash