如何处理ASP.NETCore中的cookie?

cookie是通常用于存储有关用户信息的一条数据,存储在用户的计算机上。在大多数浏览器中,每个cookie都存储为一个小文件,但在Firefox中,它们一起存储在一个文件中。 cookie表示为键值对,你可以利用键来读取、写入或删除cookie。

创新互联是一家专业提供大东企业网站建设,专注与网站设计制作、成都网站建设H5响应式网站、小程序制作等业务。10年已为大东众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

ASP.NET Core使用cookie来维护会话状态。包含会话ID的cookie随每个请求一起发送到客户端。本文讨论了如何处理ASP.NET Core中的cookie。

若要使用本文提供的代码示例,你应该在系统中安装Visual Studio 2019。如果还没有一份,可以在此处下载Visual Studio 2019(https://visualstudio.microsoft.com/downloads/)。

在Visual Studio中创建ASP.NET Core MVC项目

先不妨在Visual Studio 2019中创建一个ASP.NET Core MVC项目。假设系统中已安装Visual Studio 2019,请按照以下概述的步骤,在Visual Studio中创建一个新的ASP.NET Core MVC项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“ASP.NET Core Web应用程序”。
  4. 点击“下一步”。
  5. 在“配置新项目”窗口中,指定新项目的名称和位置。
  6. 可选情况下,选中“将解决方案和项目放在同一个目录中”复选框。
  7. 点击“创建”。
  8. 在接下来显示的“创建新的ASP.NET Core Web应用程序”窗口中,从顶部下拉列表中选择.NET Core作为运行时环境,并选择ASP.NET Core 2.2(或更高版本)。
  9. 选择“Web应用程序(Model-View-Controller)”作为项目模板,以创建新的ASP.NET Core MVC应用程序。
  10. 确保“启用Docker支持”和“配置HTTPS”这两个复选框未勾选,因为我们在这里不会使用这些功能。
  11. 确保“身份验证”设置为“不进行身份验证”,因为我们在这里也不会使用身份验证。
  12. 点击“创建”。

现在,你应该已经准备好在Visual Studio中使用一个新的ASP.NET Core MVC项目。我们将在本文的后续部分使用该项目。

在ASP.NET Core中读取cookie

你可以从Request.cookies集合读取cookie。下面的代表片段说明了如何从ASP.NET Core中的Request对象读取cookie。

 
 
 
  1. string cookie = Request.Cookies["Key"]; 

如果你想指定cookie的到期失效时间,可以使用Append方法的重载版本,如下面给出的代码片段所示。 

 
 
 
  1. CookieOptions option = new CookieOptions();  
  2. option.Expires = DateTime.Now.AddMilliseconds(10);  
  3. Response.Cookies.Append(key, value, option); 

cookieOptions类使你可以在创建cookie时指定以下额外属性:

  • 域—用于指定与cookie有关的域
  • 到期失效时间—用于指定cookie的到期失效时间
  • 路径—用于指定cookie路径
  • 安全策略—用于指定cookie是否可以通过HTTPS来访问
  • HttpOnly—用于指定cookie是否仅对服务器可用

在ASP.NET Core中写入cookie

想写入cookie,你可以利用与Request对象有关的Append方法。以下代码片段说明了如何做到这一点。

 
 
 
  1. Response.Cookies.Append(somekey, somevalue); 

在ASP.NET Core中删除cookie

若要删除cookie,可以使用与Request对象有关的cookies集合的Delete方法。以下代码片段说明了如何做到这一点。

 
 
 
  1. Response.Cookies.Delete(somekey); 

在ASP.NET Core中访问HttpContext

在本节中,我们将介绍如何在ASP.NET Core中处理cookie数据。我们需要访问HttpContext才能访问Request对象。你可以使用IHttpContextAccessor接口,访问ASP.NET Core中的HttpContext。HttpContextAccessor类实现该接口。

首先,你应该注册IHttpContextAccessor用于依赖项注入。以下代码片段说明了如何在Startup类的ConfigureServices方法中添加类型HttpContextAccessor的单一服务。 

 
 
 
  1. public void ConfigureServices(IServiceCollection services)  
  2. {  
  3. services.AddSingleton  
  4. HttpContextAccessor>();  
  5. //Other code  

你可以利用依赖项注入来获得IHttpContextAccessor实例的引用。这将反过来为你提供HttpContext的引用。

以下代码片段说明了如何访问控制器中的IHttpContextAccessor实例。请注意,当你在Visual Studio中创建新的ASP.NET Core MVC项目后,默认情况下将创建HomeController。 

 
 
 
  1. public class HomeController : Controller  
  2. {  
  3. private readonly IHttpContextAccessor _httpContextAccessor;  
  4. public HomeController(IHttpContextAccessor httpContextAccessor)  
  5.  this._httpContextAccessor = httpContextAccessor;  
  6. }  
  7. //Write your action methods here  

在ASP.NET Core控制器方法中写入cookie数据

你可以使用以下方法在控制器中写入cookie数据。 

 
 
 
  1. public IActionResult Write(string key, string value, bool isPersistent)  
  2. {  
  3. CookieOptions options = new CookieOptions();  
  4. if (isPersistent)  
  5. options.Expires = DateTime.Now.AddDays(1);  
  6. else  
  7. options.Expires = DateTime.Now.AddSeconds(10);  
  8. _httpContextAccessor.HttpContext.Response.Cookies.Append  
  9. (key, value, options);  
  10. return View("WriteCookie");  

在ASP.NET Core控制器方法中读取cookie数据

一旦cookie数据成功写入,可以使用以下方法在控制器中读取cookie数据。 

 
 
 
  1. public IActionResult Read(string key)  
  2. {  
  3. ViewBag.Data =  
  4. _httpContextAccessor.HttpContext.Request.Cookies[key];  
  5. return View("ReadCookie");  

要检查cookie是否已正确写入,可以查看Web浏览器的cookie缓存。

网页标题:如何处理ASP.NETCore中的cookie?
文章位置:http://www.csdahua.cn/qtweb/news6/215306.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网