如何在asp.net mvc 3中禁用浏览器缓存?

时间:2012-07-20 06:14:33

标签: asp.net asp.net-mvc-3

我创建了自定义身份验证。现在我想在注销按钮点击时禁用broswer的缓存。我该怎么办?我应该在注销行动中包含哪些内容?

我正在关注:http://www.bradygaster.com/custom-authentication-with-mvc-3.0

1 个答案:

答案 0 :(得分:19)

注销后您的关注点是浏览器后退按钮吗?

如果是,那么您不应该在注销时禁用缓存。您应该在所有不想缓存的页面上禁用它,在您的情况下,这些页面将是所有已验证的页面。

这可以通过编写自定义操作过滤器来完成:

public class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        var response = filterContext.HttpContext.Response;
        response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        response.Cache.SetValidUntilExpires(false);
        response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        response.Cache.SetCacheability(HttpCacheability.NoCache);
        response.Cache.SetNoStore();
    }
}

然后用它来装饰你的行为:

[Authorize]
[NoCache]
public ActionResult Foo()
{
    ...
}