Programmering

Sådan arbejder du med cookies i ASP.NET Core

En cookie er et stykke data, der typisk bruges til at gemme oplysninger om brugeren og lagres på brugerens computer. I de fleste browsere gemmes hver cookie som en lille fil, men i Firefox lagres de alle sammen i en enkelt fil. Cookies er repræsenteret som nøgleværdipar, og du kan drage fordel af tasterne til at læse, skrive eller slette cookies.

ASP.NET Core bruger cookies til at opretholde sessionstilstand; cookien, der indeholder session-id'et, sendes til klienten med hver anmodning. Denne artikel præsenterer en diskussion af, hvordan vi kan arbejde med cookies i ASP.NET Core.

For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.

Opret et ASP.NET Core MVC-projekt i Visual Studio

Lad os først oprette et ASP.NET Core MVC-projekt i Visual Studio 2019. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge nedenstående trin for at oprette et nyt ASP.NET Core MVC-projekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt" skal du angive navnet og placeringen for det nye projekt.
  6. Marker afkrydsningsfeltet "Placer løsning og projekt i samme bibliotek".
  7. Klik på Opret.
  8. I vinduet "Opret en ny ASP.NET Core-webapplikation", der vises derefter, skal du vælge .NET Core som runtime og ASP.NET Core 2.2 (eller nyere) fra rullelisten øverst.
  9. Vælg "Webapplikation (Model-View-Controller)" som projektskabelon for at oprette et nyt ASP.NET Core MVC-program.
  10. Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
  11. Sørg for, at godkendelse er indstillet til "Ingen godkendelse", da vi heller ikke bruger godkendelse her.
  12. Klik på Opret.

Du skal nu have et nyt ASP.NET Core MVC-projekt klar til brug i Visual Studio. Vi bruger dette projekt i de efterfølgende afsnit i denne artikel.

Læs en cookie i ASP.NET Core

Du kan læse en cookie fra Request.Cookies-samlingen. Følgende kodestykke illustrerer, hvordan du kan læse en cookie fra Request-objektet i ASP.NET Core.

string cookie = Request.Cookies ["Key"];

Hvis du vil specificere cookiens udløbstid, kan du bruge den overbelastede version af Append-metoden som vist i kodestykket nedenfor.

CookieOptions option = new CookieOptions ();

option.Expires = DateTime.Now.AddMilliseconds (10);

Response.Cookies.Append (nøgle, værdi, mulighed);

Klassen CookieOptions giver dig mulighed for at specificere følgende yderligere egenskaber, når du opretter en cookie:

  • Domæne - bruges til at specificere det domæne, der er knyttet til en cookie
  • Udløbstid - bruges til at specificere cookiens udløbstid
  • Sti - bruges til at specificere cookiestien
  • Sikkerhedspolitik - bruges til at specificere, om cookien er tilgængelig via HTTPS
  • HttpKun - bruges til at specificere, om cookien kun er tilgængelig for serveren

Skriv en cookie i ASP.NET Core

For at skrive en cookie kan du drage fordel af Append-metoden, der vedrører objektet Request. Følgende kodestykke illustrerer, hvordan dette kan opnås.

Response.Cookies.Append (somekey, somevalue);

Slet en cookie i ASP.NET Core

For at fjerne en cookie kan du bruge Slet-metoden i cookiesamlingen vedrørende det anmodede objekt. Følgende kodestykke viser, hvordan dette kan opnås.

Svar.Cookies.Delete (somekey);

Få adgang til HttpContext i ASP.NET Core

I dette afsnit undersøger vi, hvordan vi kan arbejde med cookiedata i ASP.NET Core. Vi bliver nødt til at få adgang til HttpContext for at få adgang til anmodningsobjektet. Du kan få adgang til HttpContext i ASP.NET Core ved hjælp af IHttpContextAccessor-grænsefladen. HttpContextAccessor-klassen implementerer denne grænseflade.

Først skal du registrere IHttpContextAccessor til afhængighedsinjektion. Følgende kodestykke illustrerer, hvordan du kan tilføje en singletontjeneste af typen HttpContextAccessor i metoden ConfigureServices i opstartklassen.

offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester)

        {

services.AddSingleton<>

HttpContextAccessor> ();

// Anden kode

        }

Du kan drage fordel af afhængighedsinjektion for at få en henvisning til IHttpContextAccessor-forekomsten. Dette vil igen give dig en henvisning til HttpContext.

Følgende kodestykke illustrerer, hvordan du kan få adgang til IHttpContextAccessor-forekomsten i controlleren. Bemærk, at HomeController oprettes som standard, når du opretter et nyt ASP.NET Core MVC-projekt i Visual Studio.

offentlig klasse HomeController: Controller

{

privat readonly IHttpContextAccessor _httpContextAccessor;

offentlig HomeController (IHttpContextAccessor httpContextAccessor)

  {

this._httpContextAccessor = httpContextAccessor;

  }   

// Skriv dine handlingsmetoder her

}

Skriv cookiedata i din ASP.NET Core-controller-metode

Du kan bruge følgende metode til at skrive cookiedata i din controller.

offentlig IActionResult Skriv (strengnøgle, strengværdi, bool isPersistent)

  {

CookieOptions muligheder = nye CookieOptions ();

hvis (er permanent)

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

andet

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

_httpContextAccessor.HttpContext.Response.Cookies.Append

(nøgle, værdi, optioner);

returner visning ("WriteCookie");

  }

Læs cookiedata i din ASP.NET Core-controller-metode

Når cookiedataene er skrevet med succes, kan du bruge følgende metode til at læse cookiedata i din controller.

offentlig IActionResult Læs (strengnøgle)

  {

ViewBag.Data =

_httpContextAccessor.HttpContext.Request.Cookies [nøgle];

returner visning ("ReadCookie");

  }

For at kontrollere, om en cookie er skrevet korrekt, kan du inspicere cookie-cachen i din webbrowser. I et fremtidigt indlæg undersøger vi, hvordan vi kan arbejde med cookiebaseret godkendelse og autorisation i ASP.NET Core.