我创建了自定义身份验证。现在我想在注销按钮点击时禁用broswer的缓存。我该怎么办?我应该在注销行动中包含哪些内容?
我正在关注:http://www.bradygaster.com/custom-authentication-with-mvc-3.0
答案 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()
{
...
}