Programiranje

Kako delati s piškotki v ASP.NET Core

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.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
  4. Kliknite Naprej.
  5. V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Po želji izberite potrditveno polje »Rešitev in projekt postavite v isti imenik«.
  7. Kliknite Ustvari.
  8. 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.
  9. Kot predlogo projekta izberite »Spletna aplikacija (Model-View-Controller)«, da ustvarite novo aplikacijo ASP.NET Core MVC.
  10. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  11. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi tu ne bomo uporabljali preverjanja pristnosti.
  12. 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.

$config[zx-auto] not found$config[zx-overlay] not found