首页 > 解决方案 > 如何仅以编程方式启动 ASP.NET cookie 会话?

问题描述

有没有办法强制Set-Cookie仅在满足某些条件时才启动基于 ASP.NET(.NET Framework 4.8、MVC 5)的基于 cookie 的会话(将 HTTP 标头发送到客户端)。

问题的背景是关于欧盟的数据隐私法。在允许应用程序(网站)操作(初始化、发送、接收)此类数据之前,用户已经/应该明确允许使用 cookie。但是,这个问题与技术实现有关。不是关于法规或其他方式的意见或“事实”。

这些网站在没有 cookie(或用户标识)的情况下运行良好。但是,有一个特殊区域需要使用 cookie。只有当用户同意 cookie(用户同意)进入特殊区域(登录页面)时,用户才会收到 cookie。另一方面,当用户的浏览器向 ASP.NET 应用程序发送 cookie 时,应用程序应该能够处理它。

我如何限制发送Set-CookieHTTP 标头仅在以编程方式“允许”时发送(例如,用户已同意并在登录页面上)。

标签: asp.netsessioncookies

解决方案


在这种情况下,这取决于您对 ASP.NET 的含义(我知道,命名很糟糕)。

ASP.NET Core MVC 2.1 对此提供了支持,作为一项功能,其中内置了同意的概念,您可以将 cookie 标记为必要或非必要,然后,如果不存在同意,非必要 cookie 将永远不会写出回复。MVC 模板已内置此功能,并附有示例代码。

对于其他版本的 ASP.NET(以前版本的 Core MVC、非 Core MVC 或 WebForms),没有内置任何内容,您必须自己滚动。


推荐阅读