Piškotek je del podatkov, ki se običajno uporablja za shranjevanje informacij o uporabniku in je shranjen v uporabnikovem računalniku. V večini brskalnikov je vsak piškotek shranjen kot majhna datoteka, v Firefoxu pa so vsi skupaj shranjeni v eni datoteki. Piškotki so predstavljeni kot pari ključ / vrednost, ključe pa lahko izkoristite za branje, pisanje ali brisanje piškotkov.
ASP.NET Core uporablja piškotke za vzdrževanje stanja seje; piškotek, ki vsebuje ID seje, se pošlje odjemalcu z vsako zahtevo. Ta članek predstavlja razpravo o tem, kako lahko delujemo s piškotki v ASP.NET Core.
Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.
Ustvarite projekt ASP.NET Core MVC v Visual Studio
Najprej ustvarimo projekt ASP.NET Core MVC v Visual Studio 2019. Če predpostavimo, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core MVC v Visual Studio.
- Zaženite Visual Studio IDE.
- Kliknite »Ustvari nov projekt«.
- V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
- Kliknite Naprej.
- V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
- Po želji izberite potrditveno polje »Rešitev in projekt postavite v isti imenik«.
- Kliknite Ustvari.
- V naslednjem oknu »Ustvari novo spletno aplikacijo ASP.NET Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 2.2 (ali novejšo) s spustnega seznama na vrhu.
- Kot predlogo projekta izberite »Spletna aplikacija (Model-View-Controller)«, da ustvarite novo aplikacijo ASP.NET Core MVC.
- Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
- Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi tu ne bomo uporabljali preverjanja pristnosti.
- Kliknite Ustvari.
Zdaj bi morali imeti v Visual Studio pripravljen nov projekt ASP.NET Core MVC. Ta projekt bomo uporabili v naslednjih oddelkih tega članka.
Preberite piškotek v ASP.NET Core
Piškotek lahko preberete iz zbirke Request.Cookies. Naslednji delček kode prikazuje, kako lahko preberete piškotek iz predmeta Request v ASP.NET Core.
string cookie = Request.Cookies ["Key"];
Če želite določiti čas poteka piškotka, lahko uporabite preobremenjeno različico metode Append, kot je prikazano v spodnjem delčku kode.
Možnost CookieOptions = novi CookieOptions ();option.Expires = DateTime.Now.AddMilliseconds (10);
Response.Cookies.Append (ključ, vrednost, možnost);
Razred CookieOptions vam omogoča, da pri ustvarjanju piškotka določite naslednje dodatne lastnosti:
- Domena - uporablja se za določitev domene, povezane s piškotkom
- Čas izteka - uporablja se za določitev časa veljavnosti piškotka
- Pot - uporablja se za določanje poti piškotka
- Varnostna politika - uporablja se za določanje, ali je piškotek dostopen prek protokola HTTPS
- HttpOnly - uporablja se za določanje, ali je piškotek na voljo samo strežniku
Napišite piškotek v ASP.NET Core
Za pisanje piškotka lahko izkoristite metodo Append, ki se nanaša na objekt Request. Naslednji delček kode prikazuje, kako je to mogoče doseči.
Response.Cookie.Append (somekey, somevalue);
Izbrišite piškotek v ASP.NET Core
Če želite odstraniti piškotek, lahko uporabite metodo Delete zbirke piškotkov, ki se nanaša na objekt Request. Naslednji delček kode prikazuje, kako je to mogoče doseči.
Response.Cookies.Delete (somekey);
Dostop do HttpContext v ASP.NET Core
V tem razdelku bomo preučili, kako lahko delamo s podatki piškotkov v ASP.NET Core. Za dostop do predmeta Request bomo morali dostopati do HttpContext. Do HttpContext lahko dostopate v ASP.NET Core z uporabo vmesnika IHttpContextAccessor. Razred HttpContextAccessor izvaja ta vmesnik.
Najprej morate registrirati IHttpContextAccessor za vbrizgavanje odvisnosti. Naslednji delček kode ponazarja, kako lahko dodate enovrstno storitev tipa HttpContextAccessor v metodi ConfigureServices razreda Startup.
public void ConfigureServices (storitve IServiceCollection){
storitve.AddSingleton<>
HttpContextAccessor> ();
// Druga koda
}
Izkoriščanje odvisnosti lahko izkoristite za sklic na primerek IHttpContextAccessor. S tem boste dobili sklic na HttpContext.
Naslednji delček kode prikazuje, kako lahko dostopate do primerka IHttpContextAccessor v krmilniku. Upoštevajte, da je HomeController privzeto ustvarjen, ko v Visual Studio ustvarite nov projekt ASP.NET Core MVC.
javni razred HomeController: krmilnik{
zasebno samo za branje IHttpContextAccessor _httpContextAccessor;
javni HomeController (IHttpContextAccessor httpContextAccessor)
{
this._httpContextAccessor = httpContextAccessor;
}
// Tukaj napišite svoje akcijske metode
}
Podatke o piškotkih zapišite v metodo krmilnika ASP.NET Core
Za zapisovanje podatkov piškotkov v krmilnik lahko uporabite naslednjo metodo.
javni zapis IActionResult (ključ niza, vrednost niza, bool isPersistent){
Možnosti CookieOptions = nove CookieOptions ();
če (isPersistent)
options.Expires = DateTime.Now.AddDays (1);
drugače
options.Expires = DateTime.Now.AddSeconds (10);
_httpContextAccessor.HttpContext.Response.Cookies.Append
(ključ, vrednost, možnosti);
return View ("WriteCookie");
}
Preberite podatke o piškotkih v metodi krmilnika ASP.NET Core
Ko so podatki o piškotkih uspešno zapisani, lahko uporabite naslednji način za branje podatkov o piškotkih v krmilniku.
javno IActionResult branje (ključ niza){
ViewBag.Data =
_httpContextAccessor.HttpContext.Request.Cookies [ključ];
return View ("ReadCookie");
}
Če želite preveriti, ali je piškotek pravilno napisan, lahko pregledate predpomnilnik piškotkov vašega spletnega brskalnika. V prihodnji objavi bomo preučili, kako lahko delujemo s preverjanjem pristnosti in avtorizacijo na osnovi piškotkov v ASP.NET Core.