Aller au contenu principal

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

info

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.

info

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.

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">
<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>

<!-- ... -->
info

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.