[.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
{
    //...
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,455评论 25 708
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,807评论 1 92
  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,314评论 0 7
  • 又见太阳 牛怀斌 那一刻我头晕目眩 只好紧紧地闭上双眼 躺在地上任暖暖光羽 沐浴我僵冷的身体 是啊...
    八五二阅读 228评论 0 4