第一百零一期:如何处理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,一经查实,立即删除!

相关文章

第一百零二期: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…

127. Word Ladder

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

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

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

如何构建积木式Web应用

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

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

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

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…

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…

spring mvc学习(21):testparam请求参数和请求头表达式

目录结构 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…

spring mvc学习(22):/textpath/*/helen

目录结构 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…

第一百零五期:5年前,跳槽涨薪,你笑了,5年后,跳槽降薪,你慌了!

去年&#xff0c;我在年度绩效面谈中与某中年技术男就 “从测试转向产品经理” 的这个话题上进行了一些探讨与分析。 作者&#xff1a;王晔倞 图片来自 Pexels 或许是因为分析的角度比较客观、真实&#xff0c;再加上俩人都比较会演戏&#xff0c;我激情&#xff0c;他投入&a…

第一百零六期:长相不讨AI喜欢面试就会挂?全球百万求职者经历AI“看脸”面试

AI不仅会筛选你的简历&#xff0c;还会通过看脸决定你能否通过面试。这不是将来时。全球已有超过一百万求职者&#xff0c;经历过AI面试官的冷酷“凝视”。 作者&#xff1a;鱼羊 本文经AI新媒体量子位&#xff08;公众号ID:QbitAI&#xff09;授权转载&#xff0c;转载请联系…

服务器控件HtmlTable下控件赋值问题

在程序开发过程中&#xff0c;碰到这样的问题&#xff1a; 1<table>2<tr>3<td><asp:DropDownList iddropdownlist1 runatserver></td>4</tr>5</table>在基类页中有如下代码&#xff1a;1foreach(Control pagectl inPage.Controls[1]…

Foundry feats. MultiverseStudio

https://www.foundry.com/news-awards/foundry-jcube-announcement 经过这么多年的过程&#xff0c;本周本产品终于发布了PR&#xff0c;这次是由Foundry独家代理销售。 目前本产品已经在全球第一线的工作室的流程内使用&#xff0c;用来装配无法想象巨大的场景&#xff0c;如果…

第一百零七期:她说,嫁人就选程序员!

又是一年双十一&#xff0c;单身狗们还好吗?想脱单?找个程序猿/程序媛是不错的选择&#xff0c;要不要了解一下? 作者&#xff1a;李二狗 图片来自 Pexels 程序员&#xff0c;已经渐渐成当代相亲市场的一只主力军。甚至可以说是“香饽饽”。 越来越多的妹子&#xff0c;在…

第一百零八期:比较容易理解的Hbase架构全解,10分钟学会,建议收藏

依然是Hadoop组件的讲解&#xff0c;今天说到HBase 架构&#xff0c;都是一字一句打出来的&#xff0c;希望各位转发加关注&#xff0c;会一直给大家写优质的内容。 作者&#xff1a;IT技术管理那些事儿 依然是Hadoop组件的讲解&#xff0c;今天说到HBase 架构&#xff0c;都…

315. Count of Smaller Numbers After Self

文章目录1 题目理解2 暴力解法3 分治法1 题目理解 输入&#xff1a;int[] nums 输出&#xff1a;计数的数组int[] counts 规则&#xff1a;counts[i]表示nums中下标大于i&#xff0c;值小于nums[i]的个数 Example 1: Input: nums [5,2,6,1] Output: [2,1,1,0] Explanation: T…

SQL Server执行计划那些事儿(3)——书签查找

接下来的文章是记录自己曾经的盲点&#xff0c;同时也透漏了自己的发展历程&#xff08;可能发展也算不上&#xff0c;只能说是瞎混&#xff09;。当然&#xff0c;一些盲点也在工作和探究过程中慢慢有些眉目&#xff0c;现在也愿意发扬博客园的奉献精神&#xff0c;拿出来和大…

第一百零九期:双十一光棍节调试一个商城必备功能,Java Springboot开源秒杀系统

秒杀系统在电商系统中是非常重要的&#xff0c;不是因为秒杀这个功能重要&#xff0c;而是因为秒杀提现的是一个系统的并发负载能力。例如阿里巴巴或者京东&#xff0c;每年的双十一的峰值&#xff0c;其实就是下一年的常态&#xff0c;双十一各项技术指标&#xff0c;已经作为…

【名额有限】云开发AI拓展能力等你来体验!

这次来了个超厉害的新能力&#xff01; 人脸智能打马赛克、人脸智能裁剪……各种操作&#xff0c;都能一步到位! 迫不及待想体验&#xff0c;戳链接&#xff1a;https://wj.qq.com/s2/3986990/e0ef/ 还没有搞懂&#xff0c;继续往下看—— 基于云开发&#xff0b;AI人脸检测与分…