新聞中心
cookie是通常用于存儲(chǔ)有關(guān)用戶(hù)信息的一條數(shù)據(jù),存儲(chǔ)在用戶(hù)的計(jì)算機(jī)上。在大多數(shù)瀏覽器中,每個(gè)cookie都存儲(chǔ)為一個(gè)小文件,但在Firefox中,它們一起存儲(chǔ)在一個(gè)文件中。 cookie表示為鍵值對(duì),你可以利用鍵來(lái)讀取、寫(xiě)入或刪除cookie。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供大東企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為大東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
ASP.NET Core使用cookie來(lái)維護(hù)會(huì)話(huà)狀態(tài)。包含會(huì)話(huà)ID的cookie隨每個(gè)請(qǐng)求一起發(fā)送到客戶(hù)端。本文討論了如何處理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)目。
- 啟動(dòng)Visual Studio IDE。
- 點(diǎn)擊“創(chuàng)建新項(xiàng)目”。
- 在“創(chuàng)建新項(xiàng)目”窗口中,從顯示的模板列表中選擇“ASP.NET Core Web應(yīng)用程序”。
- 點(diǎn)擊“下一步”。
- 在“配置新項(xiàng)目”窗口中,指定新項(xiàng)目的名稱(chēng)和位置。
- 可選情況下,選中“將解決方案和項(xiàng)目放在同一個(gè)目錄中”復(fù)選框。
- 點(diǎn)擊“創(chuàng)建”。
- 在接下來(lái)顯示的“創(chuàng)建新的ASP.NET Core Web應(yīng)用程序”窗口中,從頂部下拉列表中選擇.NET Core作為運(yùn)行時(shí)環(huán)境,并選擇ASP.NET Core 2.2(或更高版本)。
- 選擇“Web應(yīng)用程序(Model-View-Controller)”作為項(xiàng)目模板,以創(chuàng)建新的ASP.NET Core MVC應(yīng)用程序。
- 確?!皢⒂肈ocker支持”和“配置HTTPS”這兩個(gè)復(fù)選框未勾選,因?yàn)槲覀冊(cè)谶@里不會(huì)使用這些功能。
- 確?!吧矸蒡?yàn)證”設(shè)置為“不進(jìn)行身份驗(yàn)證”,因?yàn)槲覀冊(cè)谶@里也不會(huì)使用身份驗(yàn)證。
- 點(diǎn)擊“創(chuà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類(lèi)使你可以在創(chuàng)建cookie時(shí)指定以下額外屬性:
- 域—用于指定與cookie有關(guān)的域
- 到期失效時(shí)間—用于指定cookie的到期失效時(shí)間
- 路徑—用于指定cookie路徑
- 安全策略—用于指定cookie是否可以通過(guò)HTTPS來(lái)訪(fǎng)問(wèn)
- HttpOnly—用于指定cookie是否僅對(duì)服務(wù)器可用
在ASP.NET Core中寫(xiě)入cookie
想寫(xiě)入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中訪(fǎng)問(wèn)HttpContext
在本節(jié)中,我們將介紹如何在ASP.NET Core中處理cookie數(shù)據(jù)。我們需要訪(fǎng)問(wèn)HttpContext才能訪(fǎng)問(wèn)Request對(duì)象。你可以使用IHttpContextAccessor接口,訪(fǎng)問(wèn)ASP.NET Core中的HttpContext。HttpContextAccessor類(lèi)實(shí)現(xiàn)該接口。
首先,你應(yīng)該注冊(cè)IHttpContextAccessor用于依賴(lài)項(xiàng)注入。以下代碼片段說(shuō)明了如何在Startup類(lèi)的ConfigureServices方法中添加類(lèi)型HttpContextAccessor的單一服務(wù)。
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddSingleton
- HttpContextAccessor>();
- //Other code
- }
你可以利用依賴(lài)項(xiàng)注入來(lái)獲得IHttpContextAccessor實(shí)例的引用。這將反過(guò)來(lái)為你提供HttpContext的引用。
以下代碼片段說(shuō)明了如何訪(fǎng)問(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控制器方法中寫(xiě)入cookie數(shù)據(jù)
你可以使用以下方法在控制器中寫(xiě)入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ù)成功寫(xiě)入,可以使用以下方法在控制器中讀取cookie數(shù)據(jù)。
- public IActionResult Read(string key)
- {
- ViewBag.Data =
- _httpContextAccessor.HttpContext.Request.Cookies[key];
- return View("ReadCookie");
- }
要檢查cookie是否已正確寫(xiě)入,可以查看Web瀏覽器的cookie緩存。
文章標(biāo)題:如何處理ASP.NETCore中的cookie?
文章鏈接:http://fisionsoft.com.cn/article/coghpso.html
其他資訊
- 操作系統(tǒng)的特點(diǎn)及使用場(chǎng)景
- 網(wǎng)站開(kāi)發(fā)技術(shù)的*發(fā)展趨勢(shì)是什么,如何運(yùn)用網(wǎng)站開(kāi)發(fā)技術(shù)提升用戶(hù)體驗(yàn)
- MySQL查詢(xún)表字段個(gè)數(shù)的兩種方法
- 確定查詢(xún)順序使用FROM關(guān)鍵字的數(shù)據(jù)庫(kù)查詢(xún)順序(數(shù)據(jù)庫(kù)查詢(xún)from后表的順序)
- 北大青鳥(niǎo)消防主機(jī)顯示本機(jī)使用期限已到001故障是什么情況?(試用的主機(jī)打不開(kāi)請(qǐng)查詢(xún)下)


咨詢(xún)
建站咨詢(xún)
