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.
- Start Visual Studio IDE.
- Klik på "Opret nyt projekt."
- I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
- Klik på Næste.
- I vinduet "Konfigurer dit nye projekt" skal du angive navnet og placeringen for det nye projekt.
- Marker afkrydsningsfeltet "Placer løsning og projekt i samme bibliotek".
- Klik på Opret.
- 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.
- Vælg "Webapplikation (Model-View-Controller)" som projektskabelon for at oprette et nyt ASP.NET Core MVC-program.
- Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
- Sørg for, at godkendelse er indstillet til "Ingen godkendelse", da vi heller ikke bruger godkendelse her.
- 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.