.net core Cookie的使用

_dolphin
• 阅读 1345

缘起:

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

实现方法:

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

什么是Cookie:

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

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

代码部分:

/// <summary>
/// 设置本地cookie /// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>  
/// <param name="minutes">过期时长,单位:分钟</param>      
protected void SetCookies(string key, string value, int minutes = 30)
{
    HttpContext.Response.Cookies.Append(key, value, new CookieOptions
    {
        Expires \= DateTime.Now.AddMinutes(minutes), 
    });
} /// <summary>
/// 删除指定的cookie /// </summary>
/// <param name="key">键</param>
protected void DeleteCookies(string key)
{
    HttpContext.Response.Cookies.Delete(key);
} /// <summary>
/// 获取cookies /// </summary>
/// <param name="key">键</param>
/// <returns>返回对应的值</returns>
protected string GetCookies(string key)
{
    HttpContext.Request.Cookies.TryGetValue(key, out string value); if (string.IsNullOrEmpty(value))
        value \= string.Empty; return value;
}

遇到的坑:

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

方法一:

  将Startup中的代码:

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

  改为:

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

方法二:

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

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

参考:

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
Dax Dax
3年前
Cookie和Session
Cookie是浏览器(UserAgent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。Cookie的Domain和Path属性标识了这个Cookie是哪一个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有效时间,当Cookie的有效时间过了之后,这些数据就被自动删除了。如果不设置
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
喷火龙 喷火龙
3年前
cookie和session的详解与区别
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 C
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Selenium(十二):操作Cookie、调用JavaScript、HTML5的视频播放
1\.操作Cookie有时候我们想要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试的。WebDriver提供了操作Cookie的相关方法,可以读取、添加和删除cookie信息。WebDriver操作cookie的方法:get\_cookies():获得所有cookie信息
Wesley13 Wesley13
3年前
JavaCookie的使用
1.cookie是什么?cookie是web应用当中非常常用的一种技术,用于储存某些特定的用户信息。2.cookie的作用?在用户登陆时将用户的信息存放在cookie中,用户在一定的时间中再次登陆时不需要输入用户名和密码直接跳转到下一个界面。3.设置cookieCookiecookienew
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Django组件——cookie与session
Django组件——cookie与session<fontcolor00bff一、会话跟踪技术</font<fontcolorff7f501、什么是会话跟踪技术</font先了解一下什么是会话。可以把
3A网络 3A网络
2年前
一文读懂浏览器存储与缓存机制
一文读懂浏览器存储与缓存机制浏览器存储CookieCookie是HTTP协议的一种无状态协议。当请求服务器时,HTTP请求都需要携带Cookie,用来验证用户身份。Cookie由服务端生成,存储在客户端,用来维持状态。通常Cookie由以下值构成:名称(name)值(value)域(Domain)值(value)路径(Path)