16-6 Gestion de l'état de la connexion
Il n'y a aucune notion d'état de connexion pour l'instant. On assume qu'on est connecté si on a été redirigé vers l'accueil, mais aucune rétroaction n'est donnée à l'utilisateur.
De plus, nous n'avons pas de bouton de connexion dans la navigation ni d'option de déconnexion!
Affichage de boutons Connexion/Deconnexion
Pour vérifier si l'utilisateur est connecté, nous avons accès à un objet User
dans les vues.
Ce dernier comprend User.Identity.IsAuthenticated
qui nous renseigne sur l'état de l'authentification.
Dans votre navigation, vous pouvez ajouter un bloc similaire à ceci pour ajouter des options de connexion et déconnexion.
L'option de déconnexion n'est pas complète puisque l'action de déconnexion au niveau du contrôleur n'est pas présente.
<!-- ... -->
<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">
<a
class="nav-link"
asp-controller="Auth">
Déconnexion
</a>
</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>
<!-- ... -->
Si l'utilisateur est connecté (@if (User.Identity.IsAuthenticated)
), on affiche l'option de se déconnecter.
Dans le cas contraire, on donne l'option de se connecter ou de se déconnecter.