.net core Cookie的使用

缘起:

  公司领导让我做一个测试的demo,功能大概是这样的:用户通过微信扫一扫登陆网站,如果用户登录过则直接进入主界面,否则就保留在登录界面。

实现方法:

  首先先把网站地址生成个二维码,在扫描二维码后去获取Cookie如果有值那么就证明登录过直接跳转到主界面,如果Cookie不存在用户通过登录记录的用户信息并保存到Cookie。

什么是Cookie:

  储存在用户本地终端上的数据。

  一段文本数据,默认存储在客户端,一种存放在浏览器缓存,一种存放在磁盘,最大可存储4kb。

代码部分:

1/// <summary> 2/// 设置本地cookie /// </summary> 3/// <param name="key">键</param> 4/// <param name="value">值</param> 5/// <param name="minutes">过期时长,单位:分钟</param> 6protected void SetCookies(string key, string value, int minutes = 30) 7{ 8 HttpContext.Response.Cookies.Append(key, value, new CookieOptions 9 { 10 Expires \= DateTime.Now.AddMinutes(minutes), 11 }); 12} /// <summary> 13/// 删除指定的cookie /// </summary> 14/// <param name="key">键</param> 15protected void DeleteCookies(string key) 16{ 17 HttpContext.Response.Cookies.Delete(key); 18} /// <summary> 19/// 获取cookies /// </summary> 20/// <param name="key">键</param> 21/// <returns>返回对应的值</returns> 22protected string GetCookies(string key) 23{ 24 HttpContext.Request.Cookies.TryGetValue(key, out string value); if (string.IsNullOrEmpty(value)) 25 value \= string.Empty; return value; 26}

遇到的坑:

  .net 下这么设置Cookie是没问题的,但是 .net core 需要删除对非必要cookie的同意检查。

方法一:

  将Startup中的代码:

1services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. 2 options.CheckConsentNeeded = context => true; 3 options.MinimumSameSitePolicy \= SameSiteMode.None; 4});

  改为:

1services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. 2 options.CheckConsentNeeded = context => false; 3 options.MinimumSameSitePolicy \= SameSiteMode.None; 4});

方法二:

  在存储的时候增加 IsEssential = true 属性

1/// <summary> 2/// 设置本地cookie /// </summary> 3/// <param name="key">键</param> 4/// <param name="value">值</param> 5/// <param name="minutes">过期时长,单位:分钟</param> 6protected void SetCookies(string key, string value, int minutes = 30) 7{ 8 HttpContext.Response.Cookies.Append(key, value, new CookieOptions 9 { 10 Expires \= DateTime.Now.AddMinutes(minutes), 11 IsEssential \= true }); 12}

参考:

  https://www.cnblogs.com/dawenyang/p/9223331.html

本文转自 https://www.cnblogs.com/swjian/p/11531831.html,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

Cookie和Session

Cookie是浏览器(UserAgent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。Cookie的Domain和Path属性标识了这个Cookie是哪一个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。如果不设置

cookie和session的详解与区别

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 C

SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)

首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模