更改机器密钥后如何删除 ASP.NET 中的 cookie 但留在同一个子域上?
目前我们在 example.domain.com 上有 cookie,但我们需要移动到通配符 cookie (.domain.com) 以便 cookie 也适用于 foo.domain.com。为此,我们手动设置了一个机器密钥来加密/解密 asp.net 登录 cookie。问题是已经拥有旧 cookie 的人现在在尝试访问该站点时会收到 CryptographicException(因为它出于某种原因试图解密旧 cookie)。我们更改了 cookie 的名称,但它没有帮助 - 仍然收到错误。所以我们发现我们想删除所有旧的 cookie。我们尝试使用以下代码在登录站点上执行此操作:
var myCookies = Request.Cookies.AllKeys;
foreach (var cookieName in myCookies)
{
var cookie = Request.Cookies[cookieName];
if (cookie == null) continue;
cookie.Value = "written " + DateTime.Now;
cookie.Expires = DateTime.Now.AddYears(-1);
cookie.Domain = "example.domain.com"
Response.Cookies.Add(cookie);
}
我们到达了代码,它运行了,但是在谷歌浏览器资源中检查时 cookie 仍然存在。所以显然删除没有奏效。我们尝试了几种不同的方法(添加路径 =“/”,将 cookie.Value 设置为 cookie.Value 等。出于某种奇怪的原因,cookie 仍然存在,我们无法删除它们。
所以回到最初的问题,我们如何在 ASP.NET MVC 4.5 中删除 cookie 在我们的 cookie 上更改为通配符域并明确说明 web.config 中的机器密钥?