Programmering

Hvordan jobbe med informasjonskapsler i ASP.NET Core

En informasjonskapsel er et stykke data som vanligvis brukes til å lagre informasjon om brukeren og lagres på brukerens datamaskin. I de fleste nettlesere lagres hver informasjonskapsel som en liten fil, men i Firefox lagres de alle sammen i en enkelt fil. Informasjonskapsler er representert som nøkkelverdipar, og du kan dra nytte av tastene til å lese, skrive eller slette informasjonskapsler.

ASP.NET Core bruker informasjonskapsler for å opprettholde økt tilstand; informasjonskapselen som inneholder økt-ID-en blir sendt til klienten ved hver forespørsel. Denne artikkelen presenterer en diskusjon om hvordan vi kan jobbe med informasjonskapsler i ASP.NET Core.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et ASP.NET Core MVC-prosjekt i Visual Studio

Først og fremst, la oss lage et ASP.NET Core MVC-prosjekt i Visual Studio 2019. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å lage et nytt ASP.NET Core MVC-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "ASP.NET Core Web Application" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet "Konfigurer ditt nye prosjekt" angir du navnet og stedet for det nye prosjektet.
  6. Du kan eventuelt merke av for "Plasser løsning og prosjekt i samme katalog".
  7. Klikk på Opprett.
  8. I vinduet "Opprett et nytt ASP.NET Core Web Application" som vises, velger du .NET Core som kjøretid og ASP.NET Core 2.2 (eller senere) fra rullegardinlisten øverst.
  9. Velg "Web Application (Model-View-Controller)" som prosjektmal for å opprette et nytt ASP.NET Core MVC-program.
  10. Forsikre deg om at avmerkingsboksene "Aktiver Docker-støtte" og "Konfigurer for HTTPS" ikke er merket av da vi ikke bruker disse funksjonene her.
  11. Forsikre deg om at godkjenning er satt til "Ingen godkjenning", da vi heller ikke bruker autentisering her.
  12. Klikk på Opprett.

Du bør nå ha et nytt ASP.NET Core MVC-prosjekt klart til bruk i Visual Studio. Vi bruker dette prosjektet i de påfølgende delene av denne artikkelen.

Les en informasjonskapsel i ASP.NET Core

Du kan lese en informasjonskapsel fra Request.Cookies-samlingen. Følgende kodebit illustrerer hvordan du kan lese en informasjonskapsel fra Request-objektet i ASP.NET Core.

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

Hvis du ønsker å spesifisere utløpetiden for informasjonskapselen, kan du bruke den overbelastede versjonen av Tilleggsmetoden som vist i kodebiten gitt nedenfor.

CookieOptions alternativ = nye CookieOptions ();

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

Response.Cookies.Append (nøkkel, verdi, alternativ);

CookieOptions-klassen lar deg spesifisere følgende tilleggsegenskaper når du oppretter en informasjonskapsel:

  • Domene - brukes til å spesifisere domenet som er knyttet til en informasjonskapsel
  • Utløpstid - brukes til å spesifisere informasjonskapselens utløpstid
  • Sti - brukes til å spesifisere informasjonskapselbanen
  • Sikkerhetspolitikk - brukes til å spesifisere om informasjonskapselen er tilgjengelig via HTTPS
  • HttpBare - brukes til å spesifisere om informasjonskapselen bare er tilgjengelig for serveren

Skriv en informasjonskapsel i ASP.NET Core

For å skrive en informasjonskapsel kan du dra nytte av tilleggsmetoden som gjelder forespørselsobjektet. Følgende kodebit illustrerer hvordan dette kan oppnås.

Respons.Cookies.Append (somekey, somevalue);

Slett en informasjonskapsel i ASP.NET Core

For å fjerne en informasjonskapsel kan du bruke Slett-metoden for samlingen av informasjonskapsler som gjelder forespørselsobjektet. Følgende kodebit viser hvordan dette kan oppnås.

Respons.Cookies.Delete (somekey);

Få tilgang til HttpContext i ASP.NET Core

I denne delen vil vi undersøke hvordan vi kan jobbe med informasjonskapseldata i ASP.NET Core. Vi trenger tilgang til HttpContext for å få tilgang til Request-objektet. Du kan få tilgang til HttpContext i ASP.NET Core ved hjelp av IHttpContextAccessor-grensesnittet. Klassen HttpContextAccessor implementerer dette grensesnittet.

Først bør du registrere IHttpContextAccessor for avhengighetsinjeksjon. Følgende kodebit illustrerer hvordan du kan legge til en singleton-tjeneste av typen HttpContextAccessor i ConfigureServices-metoden i oppstartsklassen.

offentlig ugyldighet ConfigureServices (IServiceCollection-tjenester)

        {

tjenester.AddSingleton<>

HttpContextAccessor> ();

// Annen kode

        }

Du kan dra nytte av avhengighetsinjeksjon for å få en referanse til IHttpContextAccessor-forekomsten. Dette vil igjen gi deg en referanse til HttpContext.

Følgende kodebit illustrerer hvordan du får tilgang til IHttpContextAccessor-forekomsten i kontrolleren. Merk at HomeController er opprettet som standard når du oppretter et nytt ASP.NET Core MVC-prosjekt i Visual Studio.

offentlig klasse HomeController: Controller

{

privat readonly IHttpContextAccessor _httpContextAccessor;

offentlig hjemmekontroller (IHttpContextAccessor httpContextAccessor)

  {

this._httpContextAccessor = httpContextAccessor;

  }   

// Skriv handlingsmetodene dine her

}

Skriv informasjonskapsler i din ASP.NET Core-kontrolleremetode

Du kan bruke følgende metode for å skrive informasjonskapsler i kontrolleren din.

offentlig IActionResult Skriv (strengnøkkel, strengverdi, bool isPersistent)

  {

CookieOptions-alternativer = nye CookieOptions ();

hvis (er permanent)

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

ellers

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

_httpContextAccessor.HttpContext.Response.Cookies.Append

(nøkkel, verdi, opsjoner);

return View ("WriteCookie");

  }

Les informasjonskapsler i din ASP.NET Core controller-metode

Når informasjonen om informasjonskapsler er skrevet, kan du bruke følgende metode for å lese informasjonskapsler i kontrolleren din.

offentlig IActionResult Les (strengnøkkel)

  {

ViewBag.Data =

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

return View ("ReadCookie");

  }

For å sjekke om en informasjonskapsel er skrevet riktig, kan du inspisere informasjonskapselbufferen i nettleseren din. I et fremtidig innlegg vil vi undersøke hvordan vi kan jobbe med informasjonskapselbasert autentisering og autorisasjon i ASP.NET Core.

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