是否有清除匿名 cookie 的 API?
4 回答
最初,我遇到了“AnonymousIdentificationModule.ClearAnonymousIdentifier()”的问题。错误是“禁用该功能或用户匿名时不支持 ClearAnonymousIdentifier。”
仅当用户 itsef 是匿名用户时尝试清除匿名标识符时才会出现此问题。表示匿名用户无法清除其他匿名用户的 cookie。
为此,请在用户通过身份验证(登录用户)的情况下放置代码,例如:
if(Request.IsAuthenticated)
{
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
这会成功的。
我正在使用 MVC4,在我的场景中,我希望能够删除匿名 cookie,以便即使用户从未登录也会自动生成一个新的 cookie。(这样测试人员不必每次都删除他们的 cookie他们想以新用户身份返回站点的时间。) AnonymousIdentificationModule.ClearAnonymousIdentifier 在这种情况下不起作用,因为您只能在用户通过身份验证时调用它。(似乎该函数的可选参数会很好。)因此,或者您必须使用过去的到期日期重写匿名 cookie。我通过创建一个基本的操作方法来做到这一点,匿名用户可以随时访问并以新的匿名用户身份重新启动:
[HttpGet]
[AllowAnonymous]
public ActionResult ClearMyCookie()
{
HttpCookie cookie = new HttpCookie(".ASPXANONYMOUS");
cookie.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Add(cookie);
// Make sure to also do Session.Clear() if you're using session.
return RedirectToAction("index", "home");
}
将“.ASPXANONYMOUS”更改为您的 cookie 名称。我使用上面的默认匿名名称。
我不确定这是否是您所要求的,但您可以清除发送到浏览器的所有 cookie,如下所示:
Response.Cookies.Clear();
如果您遇到身份验证问题,您可能需要澄清问题。