场景:当网站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
{
//...
}