Je dois configurer mon identifiant pour utiliser le nom d'utilisateur au lieu de l'adresse e-mail. Comment puis-je le changer?
En fait, il utilise l'adresse de messagerie comme nom d'utilisateur. Ainsi, dans la table ASPNetUsers, vous verrez les champs de nom d'utilisateur et de messagerie avec l'adresse de messagerie.
Allez dans le AccountController, cherchez la méthode Register (POST).
Change ça:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email};
pour ça:
var user = new ApplicationUser
{
UserName = model.UserName,
Email = model.Email
};
Ensuite, allez dans Login.cshtml et modifiez tous les champs de modèle de courrier électronique correspondant en nom d'utilisateur.
Enfin, entrez dans la méthode de connexion (POST) dans AccountController et remplacez model.Email par model.UserName.
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password,
model.RememberMe, shouldLockout: false);
Vous devez également apporter des modifications à AccountViewModels.cs afin d'introduire votre nouvelle propriété UserName.
Voici comment vous le faites
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*/
}
Vous pensez avoir un utilisateur ayant nom d'utilisateur = test
et email = [email protected]
, alors vous souhaitez autoriser les utilisateurs à s'authentifier à l'aide de test au lieu de myemail @ ... `
PS. Pendant que la réponse de @Jason fonctionne, vous souhaitez parfois authentifier un utilisateur avec un nom d'utilisateur et un mot de passe réels, sans utiliser l'e-mail.
Dans ce cas, utilisez ma réponse