5

我已经创建了我的自定义身份验证。现在我想在注销按钮单击时禁用浏览器缓存。我该怎么做?我应该在注销操作中包含哪些内容?

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

4

1 回答 1

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()
{
    ...
}
于 2012-07-20T06:45:16.563 回答