[.NET MVC] ASP.NET MVC浏览器缓存:浏览器后退按钮不进入Action

场景:当网站logout以后,点击浏览器后退按钮,会回到之前的页面,即使之前页面的Action中做了权限控制。

原因:后退按钮会使用浏览器缓存的内容,并不会产生新的Http请求。

解决方案:
(1)创建一个新的MainController继承Controller,并覆盖OnActionExecuted方法。
OnActionExecuted中清除浏览器缓存。

public class MainController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        Response.Buffer = true;
        Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
        Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
        Response.Expires = 0;
        Response.CacheControl = "no-cache";
        Response.Cache.SetNoStore();

        base.OnActionExecuted(filterContext);
    }
}

(2)网站中其他Controller,继承这个MainController

public class AccountController : Controller
{
    //...
}

你可能感兴趣的:([.NET MVC] ASP.NET MVC浏览器缓存:浏览器后退按钮不进入Action)