本文介绍了ASP.NET Core Web应用程序中利用cookie存储和检索针对特定用户的信息。

作者:布加迪编译

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

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。

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

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

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

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

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

在ASP.NET Core中写入cookie

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

Response.Cookies.Append(somekey, somevalue); 

在ASP.NET Core中删除cookie

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

Response.Cookies.Delete(somekey); 

在ASP.NET Core中访问HttpContext

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

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

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton
HttpContextAccessor>();
//Other code
} 

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

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

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

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数据

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

public IActionResult Read(string key)
{
ViewBag.Data =
_httpContextAccessor.HttpContext.Request.Cookies[key];
return View("ReadCookie");
} 

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

原文标题:How to work with cookies in ASP.NET Core, 作者:Joydip Kanjilal

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

第一百零一期:如何处理ASP .NET Core中的cookie?相关推荐

  1. asp.net core中使用cookie身份验证

    背景 ASP.NET Core Identity 是一个完整的全功能身份验证提供程序,用于创建和维护登录名. 但是, cookie 不能使用基于的身份验证提供程序 ASP.NET Core Ident ...

  2. ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与Session管理

    本博文翻译自: https://dotnetcoretutorials.com/2017/10/16/owasp-top-10-asp-net-core-broken-authentication-s ...

  3. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)

    开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...

  4. 达芬奇密码 第一百零二章 第一百零三章

    达芬奇密码 第一百零二章 第一百零三章[@more@] 第一百零二章 塞拉斯一瘸一拐地走进一个看不见的寂静空间里.这时薄雾已经在肯辛顿花园中弥漫开来.他跪在湿漉漉的草地上,感到有股热血正从他肋骨以下的 ...

  5. ASP.NET Core中使用GraphQL - 第一章 Hello World

    前言 你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL. GraphQL提供了一种声明式的方式从服务器拉取数据.你可以从GraphQL官网中了解到GraphQL的所有优点.在这一系 ...

  6. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  7. 重学ASP.NET Core 中的标记帮助程序

    标记帮助程序是什么 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素. 例如,内置的 ImageTagHelper 可以将版本号追加到图片名称.  每当图片发生变化时 ...

  8. 在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

    在这篇文章中,我将介绍如何使用ASP.NET Core托管服务运行Quartz.NET作业.这样的好处是我们可以在应用程序启动和停止时很方便的来控制我们的Job的运行状态.接下来我将演示如何创建一个简 ...

  9. 理解ASP.NET Core中的中间件

    中间件是ASP.NET Core的一个重要特点,ASP.NET Core应用程序之所以能够灵活地处理各种各样的请求,完成都是由于中间件,那么它究竟是怎么一回事呢? 一.理解中间件 ASP.NET Co ...

最新文章

  1. MindSpore API编程概述
  2. mySQL优化 my.ini 配置说明
  3. Linux根文件系统介绍
  4. Lunar New Year and Cross Counting
  5. HTTP系列之:HTTP缓存
  6. java就业凉_【哔哩哔哩】秋招凉经 Java篇
  7. 概率论与数理统计 第四版 课后习题解析
  8. PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
  9. 蒙特卡罗模拟(python实现)
  10. 光纤的用途及主要种类
  11. videojs播放器插件使用详解
  12. Linux gtk 路由,在linux下使用gtk的gdk
  13. html5远程桌面 微软,微软正在测试远程桌面HTML5网页版本客户端!
  14. 好佳居软装十大品牌 掌握新中式软装风格
  15. 联想计算机不能进入系统桌面,win10电脑开机后进不了系统桌面只有联想logo
  16. 关于手机设置高对比度文字对app的影响及解决方案
  17. 计算机维修技术在线阅读,西南大学19秋[0240] 计算机维修技术在线作业
  18. SAP Down Payment的设置和使用分析
  19. 给PDF文档添加电子图章的方法
  20. 如何绘制简单漂亮的全基因组互作矩阵HiC matrix

热门文章

  1. 有了JSON.stringify(),处理json将变得更简单!!
  2. cocos2dx CCLayerColor和CCLayerColor
  3. 75个移动App开发教程
  4. FOR JENNIFER MORRISON
  5. 学习,学习javascript
  6. java界面化二叉排序树_层次序创建二叉树(图形界面和控制台输入实现)
  7. 调用接口返回500_公交卡余额查询接口开放使用啦!
  8. linux中安装多个mysql_liunx系统下安装多个MySql数据库并做主从配置
  9. c++ 多个线程操作socket要同步吗_基础知识深化:NIO优化原理和Tomcat线程模型
  10. DateTime时间的比较问题