Aller au contenu principal

18-2 Utiliser les Claims dans l'application

Ajout à Program.cs de la class Factory

Il faut dire à notre application et Identity d'utiliser la classe Factory créée précédemment plutôt que celle par défaut.

Modifiez la ligne AddIdentity pour y ajouter AddClaimsPrincipalFactory.

Snowfall.Web.Mvc/Program.cs
// Identity
builder.Services
.AddIdentity<ApplicationUser, ApplicationRole>()
.AddClaimsPrincipalFactory<ApplicationClaimsPrincipalFactory>();

Utiliser les claims dans une vue

Ensuite, ne serait-il pas intéressant de pouvoir afficher le prénom de l'utilisateur connecté dans la barre de navigation?

Vous devriez déjà avoir un bloc IsAuthenticated dans le fichier de vue _Layout.

Vous pouvez ajouter après le <ul> une autre condition pour afficher le nom de l'utilisateur.

Snowfall.Web.Mvc/Views/Shared/_Layout.cshtml
<!-- ... -->

<ul class="navbar-nav">
@if (Context.Session.GetString("panier") != null)
{
<li class="nav-item">
<a asp-controller="Panier" asp-action="Index" class="btn btn-outline-secondary">
Panier
</a>
</li>
}

@if (User.Identity != null && User.Identity.IsAuthenticated)
{
<li class="nav-item">
<form asp-controller="Auth" asp-action="Deconnexion">
<button class="btn btn-link nav-link">Déconnexion</button>
</form>
</li>
}
else
{
<li class="nav-item">
<a
class="nav-link @(controller == "Auth" ? "active" : String.Empty)"
asp-controller="Auth"
asp-action="Connexion">
Connexion
</a>
</li>
}
</ul>

@if (User.Identity != null && User.Identity.IsAuthenticated)
{
<span class="navbar-text">Bonjour, @User.FindFirstValue(ClaimTypes.GivenName)!</span>
}
</div>
</div>
</nav>
</header>

<!-- ... -->
info

Sur l'objet User, on peut utiliser FindFirstValue pour retourner la claim qui correspond.

Par exemple,

@User.FindFirstValue(ClaimTypes.GivenName)

Ce qui devrait vous donner quelque chose comme...

http://localhost:4200