0% ont trouvé ce document utile (0 vote)
21 vues31 pages

State Management

Le document traite de la gestion de l'état dans les applications ASP.NET Core, soulignant son importance pour maintenir la cohérence de l'interface utilisateur et préserver les données utilisateur. Il explore différentes méthodes de gestion de l'état, telles que les sessions, les cookies et les JWT, en détaillant leurs avantages et inconvénients. Enfin, il fournit des exemples pratiques de configuration et d'utilisation des sessions et des cookies dans le cadre d'une application web.

Transféré par

Sport tv
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues31 pages

State Management

Le document traite de la gestion de l'état dans les applications ASP.NET Core, soulignant son importance pour maintenir la cohérence de l'interface utilisateur et préserver les données utilisateur. Il explore différentes méthodes de gestion de l'état, telles que les sessions, les cookies et les JWT, en détaillant leurs avantages et inconvénients. Enfin, il fournit des exemples pratiques de configuration et d'utilisation des sessions et des cookies dans le cadre d'une application web.

Transféré par

Sport tv
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

ASP.

Net Core – State Management

Présenté par : MANI Mohammed Adil


Introduction

• Le "state management" ou la gestion de l'état fait


référence à la manière dont une application maintient
les informations relatives à l'état à travers le temps et
les différentes interactions.

• Dans le contexte des applications web, la gestion de


l'état est essentielle car le protocole HTTP est sans
état (StateLess) — ils ne conservent pas d'informations
entre les différentes requêtes.
Importance de la Gestion de l'État:

• Maintien de la cohérence de l'interface utilisateur (UI) :


– Comme le nom et prénom dans le menu, pour cacher des éléments
de menu à la base du rôle.

• Préservation des données utilisateur :


– En les cachant pour une durée de temps déterminée.

• Performances:
– En minimisant les requêtes inutiles, comme requête à chaque fois
pour connaitre le rôle de l’utilisateur.
Cas d’utilisation

• Panier d'achat dans le e-commerce: Maintenir les articles


qu'un utilisateur a ajoutés à son panier

• Formulaires multi-étapes: Garder les informations saisies par


l'utilisateur à chaque étape.

• Authentification et sessions utilisateur: Stocker les


informations de connexion de l'utilisateur.

• Préférences et paramètres utilisateur: Sauvegarder les


paramètres de configuration ou les préférences de l'utilisateur.
Possibilités

Durée de vie Méthodes


1 Requête HTTP ViewBag, ViewData
2 Requête HTTP TempData
Plusieurs requête sans partage entre utilisateurs Session, Cookies, JWT
Plusieurs Requêtes avec partage entre utilisateurs Text File, Database, Cache

Il existe 2 autres méthodes qui sont actuellement qualifiées en tant que depricated :
QueryString & Hidden Fields
Discussion sur tableau

SESSION
VS
Cookies
VS
JWT
Résumons

Méthode Avantages Inconvénients


Session • Stateful • Consommation de mémoire
• Soulager le communication avec le serveur
client • Sécurité (Vol de session)
• Taille illimitée • Types primitifs

Cookies • Stateful • Consommation de la mémoire


• Soulager le serveur utilisateur (Navigateur)
• Consommation de la
connexion utilisateur
• Sécurité (Vol de Cookie)
• Taille limitée en 4KB / Cookie
(2000 caractères UTF-8)
• Types primitifs
JWT • Stateful • Sécurité (Vol de Token)
• Taille illimité mais à minimiser le
grand maximum
• Bénéfique en cas de MicrosServices
Travailler avec les
Sessions
Travailler avec les Sessions
Service Injection - AddSession

• La méthode AddSession dans ASP.NET Core est utilisée pour


ajouter des services de gestion de session au conteneur de
services de l'application, ce qui permet d'utiliser l'état de session
dans l'application.

• Elle enregistre les services nécessaires pour supporter l'état de


session dans le conteneur d’injection de dépendances (DI).

• Lors de l'appel à AddSession, vous pouvez également passer une


action déléguée pour configurer les options liées à la gestion de
la session.
Travailler avec les Sessions
Middleware- UseSession

• ASP.NET Core fournit un middleware de gestion de


session qui stocke l'état de la session côté serveur.

• Ce traitement de vérification de la disponibilité session


doit être effectué dans toutes les actions.

• Sous ASP Core, une fonction prédéfinie doit être


appelée avant MapController.

• L'appel à UseSession ajoute le middleware de session


dans la séquence d'exécution des middlewares.
Travailler avec les Sessions
Middle Ware – UseSession()

Le rôle du middleware est la restauration de la session,


et pour le faire il passe par les étapes suivantes :
Vérification de Session Id
• Si disponible : Vérification de la durée de vie
• Si elle est bonne : Récupération de toutes les informations
dans la session dans objet appelé HTTPContext.
• Sinon : Création d’une nouvelle session et génération d’un
nouveau Session ID
• Sinon : Création d’une nouvelle session et génération
d’un nouveau Session ID.
Travailler avec les Sessions
Code de program.cs après modification
• AddSession doit être appelée
avant builder.Build()

• AddSession a définit la durée


de vie des informations par
heures.

• UseSession est appelé dans le


MiddleWare

• Si vous définissez IdleTimeout


c’est un sliding expiration time
(Un timing extensible) .

• Si vous utilisez
Cookie.MaxAge c’est un
absolute expiration time.
Travailler avec les Sessions
AddSession() & UseSession()

AddSession : Elle est utilisée pour ajouter les services de


session à l'application via l'injection de dépendances. Elle
permet de configurer des paramètres spécifiques de la
session, tels que le délai d'expiration, la stratégie de cookie,
etc.

UseSession : Elle est utilisée pour ajouter le middleware de


session dans le pipeline de requête HTTP de l'application. Le
middleware de session est configuré pour identifier la session
de l’utilisateur.
Travailler avec les Sessions
Manipulation de la session
Action Avantages

Ajouter

Modifier

Supprimer

Vider

Récupérer

Remarques

• La session n’accepte que les 2 types : String et Int, alors si vous voulez enregistrer
un tableau vous devez le sérialiser.

• Les ?? Sont l'opérateur de coalescence des nulls


Travailler avec les Sessions
Sérialisation et désérialisation

• La sérialisation est la transformation d’un objet ou liste d’objets en


chaine de caractères, le contraire se nomme désérialisation.

• Nous pouvons tous proposer un algorithme de sérialisation ou


désérialisation, mais travailler avec la convention JSON est le meilleur
choix.

• Nous sommes pas obligé de sérialiser un objet en JSON


manuellement, nous pouvons le faire à l’aide des bibliothèques
prédéfinies.

– La bibliothèque officielle depuis .NET Core 3.0 est : JsonSerializer (Plus rapide)

– Une autre bibliothèque pouvant être utilisée est : NewtonSoft (Plus simple)
Travailler avec les Sessions
Sérialisation et désérialisation – Utilisation de JsonSerializer

• Pour travailler avec JsonSerializer vous devez importer


System.Text.Json.

Exemple de sérialisation

Exemple de désérialisation
Session est HTTPOnly
HttpOnly

• Les sessions sont par défaut HTTPOnly, cela signifie que


personne n’as la possibilité d’accéder au cookie de Session ID
en utilisation JavaScript sous forme d’attaque XSS (Mais
l’attaque Man in the middle est toujours possible).
Pratique
Travailler avec les Sessions
Exemple d’authentification

• Nous allons créer un système d’authentification, permettant à un


utilisateur ayant un login est password correctes ( Pas de
vérification dans la BD ) d’accéder à la fonction Index de Home.

• Etapes :
– Configuration de la session
– Création d’un ViewModel pour Le formulaire d’authentification
– Création d’un contrôleur User avec 2 fonctions, une pour le formulaire et
autre pour la récupération.
– Création de la Vue pour l’affichage de formulaire en association avec le
ViewModel.
– Récupération des informations, et création d’une variable de session.
– Protection de Home/Index
Travailler avec les Sessions
Etape 1 : Configuration de la session

Program.cs
Travailler avec les Sessions
Etape 2 : Création du ViewModel

ViewModels/User.cs
Travailler avec les Sessions

Etape 3 : Création d’un contrôleur User avec 2 fonctions

Controllers/UserController.cs
Travailler avec les Sessions

Etape 4 : Création de la Vue pour l’affichage de formulaire

Views/User/LoginForm.cshtml
Travailler avec les Sessions

Etape 5 : Récupération des informations, et création d’une variable de


session.

Controllers/UserController.cs
Travailler avec les Sessions

Etape 6 : Protection de la fonction Index de Home

Controllers/HomeController.cs
Travailler avec les Sessions

Logout

Controllers/UserController.cs
Extension de l’exercice
CRUD Avec session
• Nous allons créer un contrôleur pour assurer le CRUD dans une session.

• Nous voulons enregistrer la liste des Taches : TODO.

• Chaque TODO est caractérisé par :


– Libelle
– Description
– State ( ToDo, Doing, Done )
– DateLimite

• Les TODOs avec state Done doivent être barrées


• Les TODOs avec dépassement doivent être en rouge.
• A côté de chaque TODO affichez un pour supprimer avec confirmation et un
bouton pour le modifier (Utilisez une bibliothèque d’icones).

• Seuls les personnes connectées peuvent faire appel aux fonctions de CRUD.
Travailler avec les
Cookies
Travailler avec les Cookies
Service Injection - AddSession

• Les cookies ne demandent aucune vérification en


middleware obligatoire, sauf si vous voulez le faire par une
fonction définie par vous même.

• Les cookies s’ajoutent en utilisant la fonction Append de


l’objet Response ( Car, pour la première fois, le cookie est
crée au serveur et il doit être envoyé à l’utilisateur sous
format de réponse )

• Les cookies se récupèrent en utilisant le tableau Cookies de


l’objet Request.
Travailler avec les Cookies
Manipulation des cookies
Action Avantages

Ajouter

Modifier

Supprimer

Vider • Pas de fonction prédéfinie, vous devez supprimer un par un.

Récupérer
Extension de l’exercice
Travailler avec les Cookies

• Nous voulons afficher à l’utilisateur, dans la liste des TODOs, la


date de sa dernière déconnexion.

• Nous voulons donner le droit à l’utilisateur de choisir son thème :


Dark ou Light :
– Créer un contrôleur ThemeController avec 1 fonction Switch pour changer
le thème, la fonction n’as aucune View, elle redirige vers Home/Index.
– Vous devez modifier le thème en utilisant les classes bootstrap (bg-dark et
bg-light).
– Vous devez ajouter cette classe à la balise <body> de votre document
html.
– A la base de la valeur de cookie, vous devez choisir le thème à afficher.

Vous aimerez peut-être aussi