Как да работите с бисквитки в ASP.NET Core

Бисквитката е част от данните, които обикновено се използват за съхраняване на информация за потребителя и се съхраняват на компютъра на потребителя. В повечето браузъри всяка бисквитка се съхранява като малък файл, но във Firefox те се съхраняват всички заедно в един файл. Бисквитките са представени като двойки ключ-стойност и можете да се възползвате от ключовете за четене, писане или изтриване на бисквитки.

ASP.NET Core използва бисквитки, за да поддържа състоянието на сесията; бисквитката, която съдържа идентификатора на сесията, се изпраща на клиента с всяка заявка. Тази статия представя дискусия за това как можем да работим с бисквитки в ASP.NET Core.

За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук.

Създайте ASP.NET Core MVC проект в Visual Studio

Първо, нека създадем ASP.NET Core MVC проект в Visual Studio 2019. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов ASP.NET Core MVC проект в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „ASP.NET Core Web Application“ от показания списък с шаблони.
  4. Щракнете върху Напред.
  5. В прозореца „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. По избор поставете отметка в квадратчето „Поставяне на решение и проект в една и съща директория“.
  7. Щракнете върху Създаване.
  8. В прозореца „Създаване на ново уеб приложение на ASP.NET Core“, показан по-нататък, изберете .NET Core като време на изпълнение и ASP.NET Core 2.2 (или по-нова версия) от падащия списък в горната част.
  9. Изберете „Уеб приложение (Model-View-Controller)“ като шаблон на проекта, за да създадете ново приложение на ASP.NET Core MVC. 
  10. Уверете се, че квадратчетата „Активиране на поддръжката на Docker“ и „Конфигуриране за HTTPS“ са отметнати, тъй като тук няма да използваме тези функции.
  11. Уверете се, че удостоверяването е настроено на „Без удостоверяване“, тъй като и тук няма да използваме удостоверяване.
  12. Щракнете върху Създаване. 

Вече трябва да имате нов ASP.NET Core MVC проект, готов за работа в Visual Studio. Ще използваме този проект в следващите раздели на тази статия.

Прочетете бисквитка в ASP.NET Core

Можете да прочетете бисквитка от колекцията Request.Cookies. Следният кодов фрагмент илюстрира как можете да прочетете бисквитка от обекта Request в ASP.NET Core.

низ бисквитка = Request.Cookies [„Ключ“];

Ако искате да посочите времето на изтичане на бисквитката, можете да използвате претоварената версия на метода Append, както е показано в кодовия фрагмент, даден по-долу.

Опция CookieOptions = нови CookieOptions (); 

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

Response.Cookies.Append (ключ, стойност, опция); 

Класът CookieOptions ви позволява да посочите следните допълнителни свойства при създаването на бисквитка:

  • Домейн - използва се за посочване на домейна, свързан с бисквитка
  • Време на изтичане - използва се за определяне на времето на изтичане на бисквитката
  • Път - използва се за указване на пътя на бисквитката
  • Политика за сигурност - използва се за указване дали бисквитката е достъпна през HTTPS
  • HttpOnly - използва се за указване дали бисквитката е достъпна само за сървъра

Напишете бисквитка в ASP.NET Core

За да напишете бисквитка, можете да се възползвате от метода Append, отнасящ се до обекта Request. Следният кодов фрагмент илюстрира как това може да се постигне.

Response.Cookies.Append (somekey, somevalue);

Изтрийте бисквитка в ASP.NET Core

За да премахнете бисквитка, можете да използвате метода Delete на колекцията Cookies, отнасящ се до обекта Request. Следният кодов фрагмент показва как може да се постигне това.

Response.Cookies.Delete (somekey);

Достъп до HttpContext в ASP.NET Core

В този раздел ще разгледаме как можем да работим с данни за бисквитки в ASP.NET Core. Ще трябва да осъществим достъп до HttpContext, за да имаме достъп до обекта Request. Можете да получите достъп до HttpContext в ASP.NET Core, като използвате интерфейса IHttpContextAccessor. Класът HttpContextAccessor реализира този интерфейс.

Първо трябва да регистрирате IHttpContextAccessor за инжектиране на зависимост. Следният кодов фрагмент илюстрира как можете да добавите единична услуга от тип HttpContextAccessor в метода ConfigureServices на класа Startup.

публична невалидна ConfigureServices (услуги на IServiceCollection)

        {

            услуги.AddSingleton

            HttpContextAccessor> ();

            // Друг код

        }

Можете да се възползвате от инжектирането на зависимости, за да получите препратка към екземпляра IHttpContextAccessor. Това от своя страна ще ви предостави препратка към HttpContext.

Следният кодов фрагмент илюстрира как можете да получите достъп до екземпляра IHttpContextAccessor в контролера. Имайте предвид, че HomeController се създава по подразбиране, когато създавате нов ASP.NET Core MVC проект в Visual Studio.

публичен клас HomeController: Контролер

{

  частно само за четене IHttpContextAccessor _httpContextAccessor;

  публичен HomeController (IHttpContextAccessor httpContextAccessor)

  {

     this._httpContextAccessor = httpContextAccessor;

  }   

  // Напишете тук своите методи за действие

}

Напишете данни за бисквитки във вашия метод на контролер ASP.NET Core

Можете да използвате следния метод за записване на данни за бисквитки във вашия контролер.

public IActionResult Write (низ ключ, стойност на низ, bool isPersistent)

  {

       Опции за CookieOptions = нови CookieOptions ();

       ако (isPersistent)

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

       друго

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

       _httpContextAccessor.HttpContext.Response.Cookies.Append

       (ключ, стойност, опции);

       return View ("WriteCookie");

  }

Четете данни за бисквитки във вашия метод на контролер ASP.NET Core

След като данните за бисквитките са написани успешно, можете да използвате следния метод за четене на данни за бисквитки във вашия контролер.

public IActionResult Read (низ ключ)

  {

       ViewBag.Data =

       _httpContextAccessor.HttpContext.Request.Cookies [ключ];

       return View ("ReadCookie");

  }

За да проверите дали бисквитката е написана правилно, можете да проверите кеш паметта на вашия уеб браузър. В следваща публикация ще разгледаме как можем да работим с удостоверяване и упълномощаване на базата на бисквитки в ASP.NET Core.