第一百零一期:如何处理ASP .NET Core中的cookie?
本文介紹了ASP.NET Core Web應(yīng)用程序中利用cookie存儲(chǔ)和檢索針對(duì)特定用戶的信息。
作者:布加迪編譯
【51CTO.com快譯】cookie是通常用于存儲(chǔ)有關(guān)用戶信息的一條數(shù)據(jù),存儲(chǔ)在用戶的計(jì)算機(jī)上。在大多數(shù)瀏覽器中,每個(gè)cookie都存儲(chǔ)為一個(gè)小文件,但在Firefox中,它們一起存儲(chǔ)在一個(gè)文件中。 cookie表示為鍵值對(duì),你可以利用鍵來(lái)讀取、寫入或刪除cookie。
ASP.NET Core使用cookie來(lái)維護(hù)會(huì)話狀態(tài)。包含會(huì)話ID的cookie隨每個(gè)請(qǐng)求一起發(fā)送到客戶端。本文討論了如何處理ASP.NET Core中的cookie。
若要使用本文提供的代碼示例,你應(yīng)該在系統(tǒng)中安裝Visual Studio 2019。如果還沒(méi)有一份,可以在此處下載Visual Studio 2019(https://visualstudio.microsoft.com/downloads/)。
在Visual Studio中創(chuàng)建ASP.NET Core MVC項(xiàng)目
先不妨在Visual Studio 2019中創(chuàng)建一個(gè)ASP.NET Core MVC項(xiàng)目。假設(shè)系統(tǒng)中已安裝Visual Studio 2019,請(qǐng)按照以下概述的步驟,在Visual Studio中創(chuàng)建一個(gè)新的ASP.NET Core MVC項(xiàng)目。
現(xiàn)在,你應(yīng)該已經(jīng)準(zhǔn)備好在Visual Studio中使用一個(gè)新的ASP.NET Core MVC項(xiàng)目。我們將在本文的后續(xù)部分使用該項(xiàng)目。
在ASP.NET Core中讀取cookie
你可以從Request.cookies集合讀取cookie。下面的代表片段說(shuō)明了如何從ASP.NET Core中的Request對(duì)象讀取cookie。
string cookie = Request.Cookies["Key"];如果你想指定cookie的到期失效時(shí)間,可以使用Append方法的重載版本,如下面給出的代碼片段所示。
CookieOptions option = new CookieOptions(); option.Expires = DateTime.Now.AddMilliseconds(10); Response.Cookies.Append(key, value, option);cookieOptions類使你可以在創(chuàng)建cookie時(shí)指定以下額外屬性:
- 域—用于指定與cookie有關(guān)的域
- 到期失效時(shí)間—用于指定cookie的到期失效時(shí)間
- 路徑—用于指定cookie路徑
- 安全策略—用于指定cookie是否可以通過(guò)HTTPS來(lái)訪問(wèn)
- HttpOnly—用于指定cookie是否僅對(duì)服務(wù)器可用
在ASP.NET Core中寫入cookie
想寫入cookie,你可以利用與Request對(duì)象有關(guān)的Append方法。以下代碼片段說(shuō)明了如何做到這一點(diǎn)。
Response.Cookies.Append(somekey, somevalue);在ASP.NET Core中刪除cookie
若要?jiǎng)h除cookie,可以使用與Request對(duì)象有關(guān)的cookies集合的Delete方法。以下代碼片段說(shuō)明了如何做到這一點(diǎn)。
Response.Cookies.Delete(somekey);在ASP.NET Core中訪問(wèn)HttpContext
在本節(jié)中,我們將介紹如何在ASP.NET Core中處理cookie數(shù)據(jù)。我們需要訪問(wèn)HttpContext才能訪問(wèn)Request對(duì)象。你可以使用IHttpContextAccessor接口,訪問(wèn)ASP.NET Core中的HttpContext。HttpContextAccessor類實(shí)現(xiàn)該接口。
首先,你應(yīng)該注冊(cè)IHttpContextAccessor用于依賴項(xiàng)注入。以下代碼片段說(shuō)明了如何在Startup類的ConfigureServices方法中添加類型HttpContextAccessor的單一服務(wù)。
public void ConfigureServices(IServiceCollection services) { services.AddSingleton HttpContextAccessor>(); //Other code }你可以利用依賴項(xiàng)注入來(lái)獲得IHttpContextAccessor實(shí)例的引用。這將反過(guò)來(lái)為你提供HttpContext的引用。
以下代碼片段說(shuō)明了如何訪問(wèn)控制器中的IHttpContextAccessor實(shí)例。請(qǐng)注意,當(dāng)你在Visual Studio中創(chuàng)建新的ASP.NET Core MVC項(xiàng)目后,默認(rèn)情況下將創(chuàng)建HomeController。
public class HomeController : Controller { private readonly IHttpContextAccessor _httpContextAccessor; public HomeController(IHttpContextAccessor httpContextAccessor) { this._httpContextAccessor = httpContextAccessor; } //Write your action methods here }在ASP.NET Core控制器方法中寫入cookie數(shù)據(jù)
你可以使用以下方法在控制器中寫入cookie數(shù)據(jù)。
public IActionResult Write(string key, string value, bool isPersistent) { CookieOptions options = new CookieOptions(); if (isPersistent) options.Expires = DateTime.Now.AddDays(1); else options.Expires = DateTime.Now.AddSeconds(10); _httpContextAccessor.HttpContext.Response.Cookies.Append (key, value, options); return View("WriteCookie"); }在ASP.NET Core控制器方法中讀取cookie數(shù)據(jù)
一旦cookie數(shù)據(jù)成功寫入,可以使用以下方法在控制器中讀取cookie數(shù)據(jù)。
public IActionResult Read(string key) { ViewBag.Data = _httpContextAccessor.HttpContext.Request.Cookies[key]; return View("ReadCookie"); }要檢查cookie是否已正確寫入,可以查看Web瀏覽器的cookie緩存。
原文標(biāo)題:How to work with cookies in ASP.NET Core, 作者:Joydip Kanjilal
閱讀目錄(置頂)(長(zhǎng)期更新計(jì)算機(jī)領(lǐng)域知識(shí))
閱讀目錄(置頂)(長(zhǎng)期更新計(jì)算機(jī)領(lǐng)域知識(shí))
閱讀目錄(置頂)(長(zhǎng)期科技領(lǐng)域知識(shí))
歌謠帶你看java面試題
總結(jié)
以上是生活随笔為你收集整理的第一百零一期:如何处理ASP .NET Core中的cookie?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 提升UI技能的5个步骤
- 下一篇: asp.net session 超时设置