Programování

Jak pracovat s cookies v ASP.NET Core

Cookie je část dat, která se obvykle používá k ukládání informací o uživateli a je uložena v počítači uživatele. Ve většině prohlížečů je každý soubor cookie uložen jako malý soubor, ale ve Firefoxu jsou uloženy společně do jednoho souboru. Soubory cookie jsou reprezentovány jako páry klíč – hodnota a klíče můžete využít ke čtení, zápisu nebo mazání souborů cookie.

ASP.NET Core používá soubory cookie k udržení stavu relace; soubor cookie, který obsahuje ID relace, je klientovi odeslán s každým požadavkem. Tento článek představuje diskusi o tom, jak můžeme pracovat s cookies v ASP.NET Core.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt ASP.NET Core MVC v sadě Visual Studio

Nejprve vytvořme projekt ASP.NET Core MVC v sadě Visual Studio 2019. Za předpokladu, že je ve vašem systému nainstalována sada Visual Studio 2019, vytvořte nový projekt ASP.NET Core MVC v sadě Visual Studio podle níže uvedených kroků.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.NET Core“.
  4. Klikněte na Další.
  5. V okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Volitelně zaškrtněte políčko „Umístit řešení a projekt do stejného adresáře“.
  7. Klikněte na Vytvořit.
  8. V okně „Vytvořit novou webovou aplikaci ASP.NET Core“, které se zobrazí dále, vyberte .NET Core jako běhový modul a ASP.NET Core 2.2 (nebo novější) z rozevíracího seznamu v horní části.
  9. Vyberte „Webová aplikace (Model-View-Controller)“ jako šablonu projektu a vytvořte novou aplikaci ASP.NET Core MVC.
  10. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  11. Ujistěte se, že je ověřování nastaveno na „Bez ověřování“, protože ani zde nebudeme používat ověřování.
  12. Klikněte na Vytvořit.

Nyní byste měli mít nový projekt ASP.NET Core MVC připravený k použití ve Visual Studiu. Tento projekt použijeme v následujících částech tohoto článku.

Přečtěte si soubor cookie v ASP.NET Core

Můžete si přečíst soubor cookie z kolekce Request.Cookies. Následující fragment kódu ukazuje, jak můžete číst cookie z objektu Request v ASP.NET Core.

string cookie = Request.Cookies ["Klíč"];

Pokud chcete určit dobu vypršení platnosti souboru cookie, můžete použít přetíženou verzi metody Append, jak je ukázáno v níže uvedeném fragmentu kódu.

Možnost CookieOptions = nové CookieOptions ();

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

Response.Cookies.Append (klíč, hodnota, volba);

Třída CookieOptions umožňuje při vytváření souboru cookie určit následující další vlastnosti:

  • Doména - slouží k zadání domény spojené s cookie
  • Doba platnosti - slouží k určení doby vypršení platnosti cookie
  • Cesta - slouží k určení cesty k souboru cookie
  • Pravidla bezpečnosti - slouží k určení, zda je soubor cookie přístupný přes HTTPS
  • Pouze Http - slouží k určení, zda je soubor cookie k dispozici pouze pro server

Napište soubor cookie v ASP.NET Core

Chcete-li napsat cookie, můžete využít metodu Append týkající se objektu Request. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

Response.Cookies.Append (somekey, somevalue);

Odstraňte soubor cookie v ASP.NET Core

Chcete-li odebrat cookie, můžete použít metodu Delete kolekce Cookies týkající se objektu Request. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

Response.Cookies.Delete (somekey);

Přístup k HttpContext v ASP.NET Core

V této části prozkoumáme, jak můžeme pracovat s daty cookie v ASP.NET Core. Abychom měli přístup k objektu Request, budeme potřebovat přístup k HttpContext. K HttpContext můžete přistupovat v ASP.NET Core pomocí rozhraní IHttpContextAccessor. Třída HttpContextAccessor implementuje toto rozhraní.

Nejprve byste měli zaregistrovat IHttpContextAccessor pro vkládání závislostí. Následující fragment kódu ukazuje, jak můžete přidat singletonovou službu typu HttpContextAccessor v metodě ConfigureServices třídy Startup.

public void ConfigureServices (služby IServiceCollection)

        {

služby. AddSingleton<>

HttpContextAccessor> ();

// Jiný kód

        }

Můžete využít výhod vkládání závislostí a získat odkaz na instanci IHttpContextAccessor. To vám zase poskytne odkaz na HttpContext.

Následující fragment kódu ukazuje, jak máte přístup k instanci IHttpContextAccessor v řadiči. Všimněte si, že HomeController je ve výchozím nastavení vytvořen při vytváření nového projektu ASP.NET Core MVC v sadě Visual Studio.

public class HomeController: Controller

{

soukromé jen pro čtení IHttpContextAccessor _httpContextAccessor;

veřejný HomeController (IHttpContextAccessor httpContextAccessor)

  {

this._httpContextAccessor = httpContextAccessor;

  }   

// Sem napište vaše akční metody

}

Zápis dat cookie ve vaší metodě řadiče ASP.NET Core

Následující metodou můžete zapsat data cookie do vašeho řadiče.

public IActionResult Write (klíč řetězce, hodnota řetězce, bool isPersistent)

  {

Možnosti CookieOptions = nové CookieOptions ();

if (isPersistent)

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

jiný

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

_httpContextAccessor.HttpContext.Response.Cookies.Append

(klíč, hodnota, možnosti);

návrat View ("WriteCookie");

  }

Čtení dat cookie ve vaší metodě řadiče ASP.NET Core

Jakmile byla data cookie úspěšně zapsána, můžete použít následující metodu ke čtení dat cookie ve vašem řadiči.

veřejné čtení IActionResult (klíč řetězce)

  {

ViewBag.Data =

_httpContextAccessor.HttpContext.Request.Cookies [klíč];

návrat View ("ReadCookie");

  }

Chcete-li zkontrolovat, zda byl soubor cookie napsán správně, můžete zkontrolovat mezipaměť souborů cookie ve vašem webovém prohlížeči. V budoucím příspěvku prozkoumáme, jak můžeme pracovat s ověřováním a autorizací na základě souborů cookie v ASP.NET Core.

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