【发布时间】:2015-12-22 01:54:32
【问题描述】:
如果一个请求带有某个 cookie 集,我想删除该 cookie,并重定向回相同的操作(并保留查询字符串、路由值等)
我希望在第二个(重定向的)请求中,cookie 会消失。 但事实并非如此。
我的操作方法:
[DeleteCookie]
public virtual ActionResult doStuff() {
// blah
}
我的动作过滤器:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class DeleteCookieAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext context) {
var request = context.HttpContext.Request;
if (request.Cookies.AllKeys.Contains("foo")) {
request.Cookies["foo"].Expires = DateTime.Now.AddYears(-1); // I tried this
request.Cookies.Remove("foo"); // I tried this
context.Result = new RedirectToRouteResult(context.RouteData.Values);
}
base.OnActionExecuting(_filterContext);
}
}
在第一次请求期间,一旦我删除了 cookie,它就会从请求中消失。但是在第二个重定向请求中,它仍然存在!所以上面的代码进入了一个无限循环。
如何删除它?
【问题讨论】:
-
您是否尝试过从响应对象中删除 cookie,而不是从请求中删除? AddYears(-1) 也应该在响应对象上工作
标签: asp.net asp.net-mvc cookies httprequest response.redirect