当前位置: 首页 > 科技观察

如何在ASP.NETCore中处理cookie?_0

时间:2023-03-14 21:52:48 科技观察

【.com快译】cookie是一段数据,通常用于存储用户的信息,存储在用户的电脑上。在大多数浏览器中,每个cookie都存储为一个小文件,但在Firefox中,它们一起存储在一个文件中。Cookie表示为键值对,您可以使用键来读取、写入或删除cookie。ASP.NETCore使用cookie来维护会话状态。每个请求都会将包含会话ID的cookie发送到客户端。本文讨论如何在ASP.NETCore中处理cookie。要使用本文中提供的代码示例,您应该在系统上安装VisualStudio2019。如果您还没有副本,可以在此处下载VisualStudio2019(https://visualstudio.microsoft.com/downloads/)。在VisualStudio中创建一个ASP.NETCoreMVC项目让我们首先在VisualStudio2019中创建一个ASP.NETCoreMVC项目。假设您的系统上安装了VisualStudio2019,请按照下面概述的步骤创建一个新的ASP.NETCoreMVCVisualStudio中的项目。启动VisualStudioIDE。单击“创建新项目”。在创建新项目窗口中,从显示的模板列表中选择ASP.NETCoreWeb应用程序。点击下一步”。在“配置新项目”窗口中,为新项目指定名称和位置。或者,选中“将解决方案和项目放在同一目录中”复选框。单击创建。在接下来出现的“创建新的ASP.NETCoreWeb应用程序”窗口中,从顶部的下拉列表中选择.NETCore作为运行环境,并选择ASP.NETCore2.2(或更高版本)。选择“WebApplication(Model-View-Controller)”作为项目模板,创建一个新的ASP.NETCoreMVC应用程序。确保未选中“启用Docker支持”和“配置HTTPS”复选框,因为我们不会在此处使用这些功能。确保“身份验证”设置为“无身份验证”,因为我们也不会在此处使用身份验证。单击创建。您现在应该已准备好在VisualStudio中使用新的ASP.NETCoreMVC项目。我们将在本文的其余部分使用该项目。在ASP.NETCore中读取cookie您可以从Request.cookies集合中读取cookie。以下代表性代码段说明了如何从ASP.NETCore中的Request对象读取cookie。stringcookie=Request.Cookies["Key"];如果要指定cookie的过期时间,可以使用Append方法的重载版本,如下面给出的代码片段所示。CookieOptionsoption=newCookieOptions();option.Expires=DateTime.Now.AddMilliseconds(10);Response.Cookies.Append(key,value,option);cookieOptions类允许您在创建cookie时指定以下附加属性:域——for指定cookie相关域的过期时间-用于指定cookie的过期时间Path-用于指定cookie路径SecurityPolicy-用于指定是否可以通过HTTPS访问cookieHttpOnly-用于指定是否cookie只对服务端可用你可以在ASP.NETCore中编写cookie要编写cookie,你可以使用与Request对象相关的Append方法。以下代码片段显示了如何执行此操作。Response.Cookies.Append(somekey,somevalue);ASP.NETCore中删除cookie要删除cookie,可以使用与Request对象相关的cookie集合的Delete方法。以下代码片段显示了如何执行此操作。Response.Cookies.Delete(somekey);在ASP.NETCore中访问HttpContext这一节我们将介绍如何在ASP.NETCore中处理cookie数据。我们需要访问HttpContext才能访问Request对象。您可以使用IHttpContextAccessor接口访问ASP.NETCore中的HttpContext。HttpContextAccessor类实现了这个接口。首先,您应该注册IHttpContextAccessor以进行依赖注入。以下代码片段说明了如何在Startup类的ConfigureServices方法中添加类型为HttpContextAccessor的单个服务。publicvoidConfigureServices(IServiceCollectionservices){services.AddSingletonHttpContextAccessor>();//Othercode}您可以使用依赖注入来获取对IHttpContextAccessor实例的引用。这将反过来为您提供对HttpContext的引用。以下代码片段说明了如何访问控制器中的IHttpContextAccessor实例。请注意,当您在VisualStudio中创建新的ASP.NETCoreMVC项目时,将默认创建HomeController。publicclassHomeController:Controller{privatereadonlyIHttpContextAccessor_httpContextAccessor;publicHomeController(IHttpContextAccessorhttpContextAccessor){this._httpContextAccessor=httpContextAccessor;}//在此处写你的actionmethod}在ASP.NETCore控制器方法中写入cookie数据可以使用如下方法在控制器中写入cookie数据。publicIActionResultWrite(stringkey,stringvalue,boolisPersistent){CookieOptionsoptions=newCookieOptions();if(isPersistent)options.Expires=DateTime.Now.AddDays(1);elseoptions.Expires=DateTime.Now.AddSeconds(10);_httpContextAccessor.HttpContext.Response.Cookies.Append(key,value,options);returnView("WriteCookie");}在ASP.NETCore控制器方法中读取cookie数据一旦cookie数据写入成功,就可以在控制器中使用如下方法读取饼干数据。publicIActionResultRead(stringkey){ViewBag.Data=_httpContextAccessor.HttpContext.Request.Cookies[key];returnView("ReadCookie");}要检查cookie是否正确写入,您可以检查网络浏览器的cookie缓存。原标题:HowtoworkwithcookiesinASP.NETCore,作者:JoydipKanjilal