Ohjelmointi

Kuinka toimia evästeiden kanssa ASP.NET Core -sovelluksessa

Eväste on tietokanta, jota yleensä käytetään käyttäjän tietojen tallentamiseen, ja se tallennetaan käyttäjän tietokoneelle. Useimmissa selaimissa kukin eväste tallennetaan pienenä tiedostona, mutta Firefoxissa ne tallennetaan yhdessä yhteen tiedostoon. Evästeet esitetään avainarvopareina, ja voit hyödyntää avaimia evästeiden lukemiseen, kirjoittamiseen tai poistamiseen.

ASP.NET Core käyttää evästeitä istunnon tilan ylläpitämiseen; istunnon tunnuksen sisältävä eväste lähetetään asiakkaalle jokaisen pyynnön yhteydessä. Tämä artikkeli esittelee keskustelun siitä, miten voimme toimia evästeiden kanssa ASP.NET Core -sovelluksessa.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core MVC -projekti Visual Studiossa

Ensinnäkin, luodaan ASP.NET Core MVC -projekti Visual Studio 2019: ssä. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core MVC -projekti Visual Studioon noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Voit vaihtoehtoisesti valita Sijoita ratkaisu ja projekti samaan hakemistoon -valintaruutu.
  7. Napsauta Luo.
  8. Valitse seuraavassa näkyvässä "Luo uusi ASP.NET-ydinverkkosovellus" -ikkunassa .NET Core ajonaikaisena ja ASP.NET Core 2.2 (tai uudempi) ylhäällä olevasta avattavasta luettelosta.
  9. Luo uusi ASP.NET Core MVC -sovellus valitsemalla projektisivuksi ”Web-sovellus (Model-View-Controller)”.
  10. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  11. Varmista, että todennuksen asetuksena on Ei todentamista, koska emme myöskään käytä todennusta täällä.
  12. Napsauta Luo.

Sinulla on nyt oltava uusi ASP.NET Core MVC -projekti valmis aloittamaan Visual Studiossa. Käytämme tätä projektia tämän artikkelin seuraavissa osioissa.

Lue eväste ASP.NET Core -sovelluksesta

Voit lukea evästeen Request.Cookies-kokoelmasta. Seuraava koodinpätkä kuvaa, kuinka voit lukea evästeen Request-objektista ASP.NET Core -sovelluksessa.

merkkijonoeväste = Request.Cookies ["Key"];

Jos haluat määrittää evästeen vanhenemisajan, voit käyttää Liitä-menetelmän ylikuormitettua versiota alla olevan koodikatkelman mukaisesti.

CookieOptions-vaihtoehto = uusi CookieOptions ();

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

Response.Cookies.Append (avain, arvo, vaihtoehto);

CookieOptions-luokan avulla voit määrittää seuraavat lisäominaisuudet, kun luot evästettä:

  • Verkkotunnus - käytetään määrittämään evästeeseen liittyvä toimialue
  • Vanhenemisaika - käytetään määrittämään evästeen vanhentumisaika
  • Polku - käytetään määrittämään evästepolku
  • Turvallisuuspolitiikka - käytetään määrittämään, onko eväste käytettävissä HTTPS: n kautta
  • HttpVain - käytetään määrittämään, onko eväste vain palvelimen käytettävissä

Kirjoita eväste ASP.NET Core -sovellukseen

Voit kirjoittaa evästeen hyödyntämällä Pyyntö-objektiin liittyvää Liitä-menetelmää. Seuraava koodinpätkä kuvaa, miten tämä voidaan saavuttaa.

Response.Cookies.Append (somekey, somevalue);

Poista eväste ASP.NET Core -sovelluksesta

Voit poistaa evästeen käyttämällä Request-objektiin liittyvän Evästeet-kokoelman Poista-menetelmää. Seuraava koodinpätkä osoittaa, miten tämä voidaan saavuttaa.

Response.Cookies.Delete (somekey);

Käytä HttpContextia ASP.NET Core -sovelluksessa

Tässä osiossa tutkitaan, miten voimme toimia evästetietojen kanssa ASP.NET Core -sovelluksessa. Meidän on käytettävä HttpContextia, jotta voimme käyttää Request-objektia. Voit käyttää HttpContextia ASP.NET Core -sovelluksessa IHttpContextAccessor-käyttöliittymän avulla. HttpContextAccessor-luokka toteuttaa tämän käyttöliittymän.

Ensin sinun on rekisteröitävä IHttpContextAccessor riippuvuussyöttöä varten. Seuraava koodinpätkä kuvaa, kuinka voit lisätä yhden tyyppisen HttpContextAccessor-palvelun Startup-luokan ConfigureServices-menetelmään.

public void ConfigureServices (IServiceCollection-palvelut)

        {

AddSingleton<>

HttpContextAccessor> ();

// Muu koodi

        }

Voit hyödyntää riippuvuusinjektiota saadaksesi viitteen IHttpContextAccessor-ilmentymään. Tämä puolestaan ​​antaa sinulle viittauksen HttpContextiin.

Seuraava koodinpätkä kuvaa, kuinka pääset IHttpContextAccessor-ilmentymään ohjaimessa. Huomaa, että HomeController luodaan oletusarvoisesti, kun luot uuden ASP.NET Core MVC -projektin Visual Studiossa.

julkisen luokan HomeController: Controller

{

yksityinen vain lukea IHttpContextAccessor _httpContextAccessor;

julkinen HomeController (IHttpContextAccessor httpContextAccessor)

  {

this._httpContextAccessor = httpContextAccessor;

  }   

// Kirjoita toimintatapasi tähän

}

Kirjoita evästetiedot ASP.NET Core controller -menetelmääsi

Voit kirjoittaa evästetietoja ohjaimeen seuraavalla tavalla.

public IActionResult Write (merkkijonoavain, merkkijonoarvo, bool isPersistent)

  {

CookieOptions-vaihtoehdot = new CookieOptions ();

jos (onPysyvä)

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

muu

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

_httpContextAccessor.HttpContext.Response.Cookies.Append

(avain, arvo, vaihtoehdot);

return View ("WriteCookie");

  }

Lue evästetiedot ASP.NET Core -ohjaimen menetelmällä

Kun evästetiedot on kirjoitettu onnistuneesti, voit käyttää seuraavaa tapaa lukea evästetietoja ohjaimestasi.

public IActionResult Read (merkkijonoavain)

  {

ViewBag.Data =

_httpContextAccessor.HttpContext.Request.Cookies [avain];

paluunäkymä ("ReadCookie");

  }

Voit tarkistaa, onko eväste kirjoitettu oikein, tarkistamalla selaimesi evästeen välimuisti. Tulevassa viestissä tarkastelemme, kuinka voimme toimia evästepohjaisen todennuksen ja todennuksen kanssa ASP.NET Core -palvelussa.