👹 Boss: UserManager
À la dernière étape, vous avez créé la base d'un contrôleur pour créer un compte:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(CreerCompteViewModel creerCompteViewModel)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser
{
UserName = creerCompteViewModel.Email,
Email = creerCompteViewModel.Email,
Prenom = creerCompteViewModel.Prenom,
Nom = creerCompteViewModel.Nom
};
}
return View("New", creerCompteViewModel);
}
-
Utilisez l'objet
_userManager
pour créer le compte de l'utilisateur dans la base de données.astuceLa fonction
CreateAsync
peut prendre deux arguments:-
Un utilisateur
-
Un mot de passe
Elle retourne un résultat
IdentityResult
sur laquelle une propriété permet de vérifier si l'opération de création a été un succès.De plus, pour votre information,
UserManager
utilise votreUserRepository
. Plus particulièrement la fonctionCreateAsync
de ce dernier.Snowfall.Data/Repositories/UserRepository.cspublic async Task<IdentityResult> CreateAsync(ApplicationUser user, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
using (var connection = _dbContext.CreateConnection())
{
string sql = @"
INSERT INTO application_users (username, normalized_username, email,
normalized_email, email_confirmed, password_hash, prenom, nom)
VALUES (@UserName, @NormalizedUserName, @Email, @NormalizedEmail, @EmailConfirmed, @PasswordHash, @Prenom, @Nom)
RETURNING id";
user.Id = await connection.QuerySingleAsync<string>(sql, user);
}
return IdentityResult.Success;
} -
-
Testez le formulaire. Vous devriez pouvoir remplir le formulaire et cela devrait créer un utilisateur dans la base de données.
attentionUtilisez un mot de passe d'au moins 8 caractères avec 1 caractère spécial, une majuscule et un chiffre.
Allez jeter un coup d'œil à la table
application_users
, un utilisateur devrait être créé. -
Si le résultat est un succès (après la sauvegarde en BD), connectez l'utilisateur à l'aide de
_signInManager
, de la même façon que vous le faites dans le contrôleur d'authentification. De plus, redirigez vers la page d'accueil après avoir utilisé_signInManager
.
L'opération de création d'utilisateurs retourne un objet de type IdentityResult
qui devrait pouvoir vous renseigner sur le succès de l'opération de création. Vous voudrez créer la session de l'utilisateur seulement dans le cas où le statut de IdentityResult est positif.

- Votre utilisateur n'aura pas de rôle d'assigné. Juste avant de connecter l'utilisateur à l'aide de
_signInManager
, donc dans la condition de succès, utilisezAddToRoleAsyc
sur_userManager
pour ajouter l'utilisateur au rôleUtilisateur
. Testez et vérifiez que l'utilisateur que vous venez de créer a bien le bon rôle dans la BD.