Comment utiliser les cookies dans ASP.NET Core

Un cookie est un élément de données généralement utilisé pour stocker des informations sur l'utilisateur et est stocké sur l'ordinateur de l'utilisateur. Dans la plupart des navigateurs, chaque cookie est stocké sous forme de petit fichier, mais dans Firefox, ils sont stockés tous ensemble dans un seul fichier. Les cookies sont représentés sous forme de paires clé-valeur et vous pouvez profiter des clés pour lire, écrire ou supprimer les cookies.

ASP.NET Core utilise des cookies pour maintenir l'état de la session; le cookie qui contient l'ID de session est envoyé au client avec chaque demande. Cet article présente une discussion sur la façon dont nous pouvons travailler avec les cookies dans ASP.NET Core.

Pour utiliser les exemples de code fournis dans cet article, vous devez disposer de Visual Studio 2019 installé sur votre système. Si vous n'en avez pas déjà une copie, vous pouvez télécharger Visual Studio 2019 ici.

Créer un projet ASP.NET Core MVC dans Visual Studio

Tout d'abord, créons un projet ASP.NET Core MVC dans Visual Studio 2019. En supposant que Visual Studio 2019 est installé sur votre système, suivez les étapes décrites ci-dessous pour créer un nouveau projet ASP.NET Core MVC dans Visual Studio.

  1. Lancez l'IDE de Visual Studio.
  2. Cliquez sur "Créer un nouveau projet".
  3. Dans la fenêtre «Créer un nouveau projet», sélectionnez «Application Web ASP.NET Core» dans la liste des modèles affichés.
  4. Cliquez sur Suivant.
  5. Dans la fenêtre «Configurer votre nouveau projet», spécifiez le nom et l'emplacement du nouveau projet.
  6. Si vous le souhaitez, cochez la case «Placer la solution et le projet dans le même répertoire».
  7. Cliquez sur Créer.
  8. Dans la fenêtre «Créer une nouvelle application Web ASP.NET Core» ci-dessous, sélectionnez .NET Core comme moteur d'exécution et ASP.NET Core 2.2 (ou version ultérieure) dans la liste déroulante en haut.
  9. Sélectionnez «Application Web (Model-View-Controller)» comme modèle de projet pour créer une nouvelle application ASP.NET Core MVC. 
  10. Assurez-vous que les cases à cocher «Activer le support Docker» et «Configurer pour HTTPS» ne sont pas cochées car nous n'utiliserons pas ces fonctionnalités ici.
  11. Assurez-vous que l'authentification est définie sur «Aucune authentification» car nous n'utiliserons pas non plus l'authentification ici.
  12. Cliquez sur Créer. 

Vous devez maintenant avoir un nouveau projet ASP.NET Core MVC prêt à être utilisé dans Visual Studio. Nous utiliserons ce projet dans les sections suivantes de cet article.

Lire un cookie dans ASP.NET Core

Vous pouvez lire un cookie de la collection Request.Cookies. L'extrait de code suivant illustre comment vous pouvez lire un cookie à partir de l'objet Request dans ASP.NET Core.

cookie de chaîne = Request.Cookies ["Key"];

Si vous souhaitez spécifier l'heure d'expiration du cookie, vous pouvez utiliser la version surchargée de la méthode Append comme indiqué dans l'extrait de code ci-dessous.

Option CookieOptions = new CookieOptions (); 

option.Expires = DateHeure.Now.AddMillisecondes (10); 

Response.Cookies.Append (clé, valeur, option); 

La classe CookieOptions vous permet de spécifier les propriétés supplémentaires suivantes lors de la création d'un cookie:

  • Domaine - utilisé pour spécifier le domaine associé à un cookie
  • Heure d'expiration - utilisée pour spécifier l'heure d'expiration du cookie
  • Chemin - utilisé pour spécifier le chemin du cookie
  • Politique de sécurité - utilisée pour spécifier si le cookie est accessible via HTTPS
  • HttpOnly - utilisé pour spécifier si le cookie est disponible uniquement pour le serveur

Ecrire un cookie dans ASP.NET Core

Pour écrire un cookie, vous pouvez tirer parti de la méthode Append relative à l'objet Request. L'extrait de code suivant illustre comment cela peut être réalisé.

Response.Cookies.Append (une clé, une valeur);

Supprimer un cookie dans ASP.NET Core

Pour supprimer un cookie, vous pouvez utiliser la méthode Delete de la collection Cookies appartenant à l'objet Request. L'extrait de code suivant montre comment cela peut être réalisé.

Response.Cookies.Delete (une clé);

Accéder à HttpContext dans ASP.NET Core

Dans cette section, nous examinerons comment nous pouvons travailler avec les données de cookies dans ASP.NET Core. Nous devons accéder à HttpContext pour pouvoir accéder à l'objet Request. Vous pouvez accéder à HttpContext dans ASP.NET Core à l'aide de l'interface IHttpContextAccessor. La classe HttpContextAccessor implémente cette interface.

Vous devez d'abord enregistrer IHttpContextAccessor pour l'injection de dépendances. L'extrait de code suivant illustre comment vous pouvez ajouter un service singleton de type HttpContextAccessor dans la méthode ConfigureServices de la classe Startup.

public void ConfigureServices (services IServiceCollection)

        {

            services.AddSingleton

            HttpContextAccessor> ();

            // Autre code

        }

Vous pouvez tirer parti de l'injection de dépendances pour obtenir une référence à l'instance IHttpContextAccessor. Cela vous fournira à son tour une référence à HttpContext.

L'extrait de code suivant illustre comment vous pouvez accéder à l'instance IHttpContextAccessor dans le contrôleur. Notez que HomeController est créé par défaut lorsque vous créez un nouveau projet ASP.NET Core MVC dans Visual Studio.

public class HomeController: Contrôleur

{

  privé en lecture seule IHttpContextAccessor _httpContextAccessor;

  public HomeController (IHttpContextAccessor httpContextAccessor)

  {

     this._httpContextAccessor = httpContextAccessor;

  }   

  // Écrivez vos méthodes d'action ici

}

Écrire des données de cookie dans votre méthode de contrôleur ASP.NET Core

Vous pouvez utiliser la méthode suivante pour écrire des données de cookies dans votre contrôleur.

public IActionResult Write (clé de chaîne, valeur de chaîne, booléen isPersistent)

  {

       Options de CookieOptions = new CookieOptions ();

       if (isPersistent)

           options.Expires = DateHeure.Now.AddDays (1);

       autre

           options.Expires = DateTime.Now.AddSeconds (10);

       _httpContextAccessor.HttpContext.Response.Cookies.Append

       (clé, valeur, options);

       return View ("WriteCookie");

  }

Lire les données des cookies dans votre méthode de contrôleur ASP.NET Core

Une fois que les données des cookies ont été écrites avec succès, vous pouvez utiliser la méthode suivante pour lire les données des cookies dans votre contrôleur.

public IActionResult Read (clé de chaîne)

  {

       ViewBag.Data =

       _httpContextAccessor.HttpContext.Request.Cookies [clé];

       return View ("ReadCookie");

  }

Pour vérifier si un cookie a été correctement écrit, vous pouvez inspecter le cache des cookies de votre navigateur Web. Dans un prochain article, nous examinerons comment nous pouvons travailler avec l'authentification et l'autorisation basées sur les cookies dans ASP.NET Core.