GDPR(Cookie处理)

https://www.cnblogs.com/GuZhenYin/p/9154447.html

前言
时间一晃 ASP.NET Core已经迭代到2.1版本了.

迫不及待的的下载了最新的版本,然后生成了一个模版项目来试试水.

...然后就碰到问题了... 我发现..cookie竟然存不进去了..(怨念+100)

找了各种资料,无果 最后无奈只得麻烦善友老师..老师回了一句GDPR

虽然一头雾水,但是还是去百度了一发.终于找到原因..(E文好的可以自行跳转,不好的..就往下看)

官方文档:https://docs.microsoft.com/en-us/aspnet/core/security/gdpr?view=aspnetcore-2.1

正文

是因为从ASP.NET Core2.1开始,我们的ASP.NET开始可以支持GDPR规范了,(而且顺带他生成的模版,直接就帮你开启了.)

那么什么是GDPR规范呢?

百度百科如下:

《通用数据保护条例》(General Data Protection Regulation,简称GDPR)为欧洲联盟于2018年5月25日出台的条例,前身是欧盟在1995年制定的《计算机数据保护法》。

注意出台时间..2018年5月25号..我去啊 才出来就支持了..还真是与时俱进..

那么这个东西和存不进Cookie有什么关系呢?

因为这个条例把cookie限制为用户隐私数据,如果要使用的话,必须征得用户同意.

而且在ASP.NET Core2.1的官方项目模板在创建的Razor Pages和MVC项目的时候,会自动帮你添加这个GDPR协议的支持.so..就存不进去了..

大概在模版中帮我们生成了如下内容:

在Startup设置了 CookiePolicyOptions和UseCookiePolicy
添加_CookieConsentPartial.cshtml 局部视图。
在根目录/ Privacy.cshtml或主页/ Privacy.cshtml视图提供了一个页面,让你详细说明你的网站的隐私政策。上面的_CookieConsentPartial.cshtml文件会生成一个链接到这个页面。
对于使用个人用户帐户创建的应用程序,管理页面提供了下载和删除个人用户数据的链接。
我们来看看它添加的内容(这里因为没用到UseCookiePolicy,所以我们暂且不论).

在Startup中的ConfigureServices方法,我们找到设置CookiePolicyOptions的代码如下:

复制代码
services.Configure(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;
});
复制代码
其实,到这里,我们基本就已经解决了cookie存不进去的问题..我们可以看到他默认设置CheckConsentNeeded 为true了.我们只需要设置为false.或者删除这一段代码,那么我们的 cookie就能正常的使用了

但是,既然欧盟出台了这个规范,虽然管不到中国..估计迟早要全球推广或者你做的是欧盟国际的项目,就必然要支持..所以我们继续往下看..

我们找到 _CookieConsentPartial.cshtml局部视图
在如图位置:

我们打开,会发现里面是一句提示,有同意和了解更多的一些选项,我们翻译一下,运行项目,效果如下:

不过这时候你要是满心欢喜的点了同意..那就需要多看看JS了..我们会发现,这个同意所对应的JS里面的相关代码并没有写完..

那我们自己把他补充完整.

首先我们添加控制器方法如下:

复制代码
public bool OkCookie()
{
var consentFeature = HttpContext.Features.Get();
consentFeature.GrantConsent();
return true;
}
复制代码
也就是让该用户同意使用cookie并做上标记.(原理其实就是在cookie中添加了一个标记,如果有这个标记就是同意了.可以自行查看源码)

然后我们添加JS脚本如下:

复制代码
(function () {
document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) {
document.cookie = el.target.dataset.cookieString;
// document.querySelector("#cookieConsent").classList.add("hidden");
$.post("@Url.Action("OkCookie","Home")", "", function () {
document.querySelector("#cookieConsent").classList.add("hidden");
}
)
}, false);
})();
复制代码
访问我们刚刚的方法,并隐藏这个提示.

这时候我们点击同意,会发现cookie中多出一个标记 如下:

然后我们在存储我们的cookie就可以成功了.

效果如下:

本来,文章到此就结束了..但是其实关于cookie.我问了一圈周边同事,感觉大家都是不甚了解的样子..

下面也就顺便说一说ASP.NET Core 中关于cookie的使用.

ASP.NET Core 关于Cookie的一些使用
1.存储cookie.代码如下:
Guid date = Guid.NewGuid();
Response.Cookies.Append("UserName666", date.ToString());
2.设置cookie属性
与之前的asp.net 不同,设置cookie的详细属性值,不在是new一个HttpCookie对象了..

而是在Append的时候多了一个参数,为CookieOptions

使用方法如下:

Response.Cookies.Append("8888", "999999", new CookieOptions()
{
HttpOnly = true,
Secure = true
});
几个常用的cookie属性解释一下:

2.1 HttpOnly
设置为后台只读模式,前端无法通过JS来获取cookie值,可以有效的防止XXS攻击

2.2 Secure
采用安全模式来传递cookie,如果设置为true,就是当你的网站开启了SSL(就是https),的时候,这个cookie值才会被传递

2.3 MaxAge
cookie的有效毫秒数,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效;如果设置为0,则立即删除该Cookie。

2.4 IsEssential

是否强制存储cookie,注意,这里的强制 是针对于上面所讲的内容的..也就是当用户不同意使用cookie的时候,你也可以通过设置这个属性为true把cookie强制存储.

GDPR(Cookie处理)的更多相关文章

  1. ASP.NET Core2.1 你不得不了解的GDPR(Cookie处理)

    前言 时间一晃 ASP.NET Core已经迭代到2.1版本了. 迫不及待的的下载了最新的版本,然后生成了一个模版项目来试试水. ...然后就碰到问题了... 我发现..cookie竟然存不进去了.. ...

  2. ASP.NET Core2.1 你不得不了解的GDPR(Cookie处理) - (转载)

    前言 时间一晃 ASP.NET Core已经迭代到2.1版本了. 迫不及待的的下载了最新的版本,然后生成了一个模版项目来试试水. ...然后就碰到问题了... 我发现..cookie竟然存不进去了.. ...

  3. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

  4. .NetCore 使用Cookie

    1.首先我们在Startup下面的ConfigureServices中注册授权认证服务以及AddCookie services.AddAuthentication(CookieAuthenticati ...

  5. 当GDPR来敲门,中国互联网企业该如何应对?

    本文来自 网易云社区 . 欧盟<通用数据保护条例>(General Data Protection Regulation,GDPR)已于2018年5月25日正式生效,谷歌.Facebook ...

  6. ASP.NET Core2.1 中如何使用 Cookie和Session

    https://blog.csdn.net/canduecho/article/details/80651853 ASP.NET Core2.1的官方项目模板在创建的Razor Pages和MVC项目 ...

  7. Asp.Net Core Cookie使用,Asp.net Core Cookie操作失效

    注:本文主要介绍Asp.net Core 3.0后增加cookie代理功能. 默认是增加了的. 默认增加的这个有些问题所在, 1.原来设置cookie方式将不可用,需要按照代理方式设置 2.对于ses ...

  8. Asp.Net Core 存储Cookie 的问题

    Asp.Net Core 2.1生成的项目模板默认实现了<欧洲常规数据保护法规 (GDPR)>支持.这就使得我们的程序要想成功的存储除了用户身份以外的cookie通常是需要用户同意的. 3 ...

  9. 关于GDPR,你需要了解的的5件事

    GDPR要求组织确保对用户数据进行良好的保护,而不是滥用,使用户获得知情同意,并且违规行为将受到巨额罚款. 欧盟通用数据保护条例(GDPR)于2018年5月25日开始执行.然而直到如今,还是有不少人对 ...

随机推荐

  1. hdu 4704 sum(费马小定理+快速幂)

    题意: 这题意看了很久.. s(k)表示的是把n分成k个正整数的和,有多少种分法. 例如: n=4时, s(1)=1     4 s(2)=3     1,3      3,1       2,2 s ...

  2. Queue Explorer过期处理

    Queue Explorer是收费软件,用一段时间后会显示过期界面无法使用, 我们可以删除注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Cogin\Queue ...

  3. thinkjs,promise

    thinkjs是奇舞团开源的一款NodejsMVC框架,该框架底层基于Promise来实现,很好的解决了Nodejs里异步回调的问题. 可参考: http://www.thinkjs.org/ htt ...

  4. 洛谷P2014——选课

    题目:https://www.luogu.org/problemnew/show/P2014 树状DP,注意枚举当前子树中选几个时的边界. 代码如下: #include<iostream> ...

  5. HDU4027(线段树单点更新区间)

    Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65768/65768 K ...

  6. Linux中的nc测试端口是否开放

    nc测试端口是否开放 在Linux中有一个级强大的网络工具netcat,在默认情况下面都是没有安装的,现在介绍一下安装过程 其实安装很简单 一.安装使用 1.只需输入命令yum安装: [root@SZ ...

  7. VMware设置桥接网络

     VMware设置桥接网络 2011-12-30 08:57:04 分类: LINUX 一.桥接网络的基本原理    配置成桥接网络连接模式的虚拟机就当作主机所在以太网的一部分, 虚拟系统和宿主机器的 ...

  8. 小程序[邮箱提取器-EmailSplider]总结

    1.背景情况     学东西做快的是付诸实践,写这个小程序的目的就是为了综合运用各个知识点,从而提升学习的效果.   2.涉及知识     A.Swing 的布局     B.Swing中,线程访问U ...

  9. Jdk 1.7*安装并配置

    jdk 1.7的下载,见http://www.cnblogs.com/lchzls/p/6281448.html 新建JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径C:\Progra ...

  10. 从RAID看垂直伸缩到水平伸缩的演化

    磁盘的读写过程,最消耗时间的地方就是在磁盘中磁道寻址的过程,而一旦寻址完成,写入数据的速度很快. 连续写入:写入只寻址一次 存储位置与逻辑位置相邻 不用多次寻址 随机写入:每写一次 便寻址一次 增加了 ...