注销系统后 应不允许使用浏览器后退回到需要登陆才显示的系统界面。但是由于浏览器会缓存所以点击后退就直接回去了。这样感觉安全性不好。望大虾指教!如何让浏览器去重新访问服务器下载页面 而不从缓存读取页面?
定义如下个类: public class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache.SetNoStore(); } }
然后在 global.asax.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new NoCacheAttribute());
}
FYI:
http://stackoverflow.com/questions/1160105/asp-net-mvc-disable-browser-cache
大虾 就是 大虾~ 感谢! 我自己也弄了一个方法感觉不够完美~进去的时候异步请求后台判断Session是否存在不存在刷新页面,异步使用随机参数。但是后退的时候会闪一下原来的页面出来。不够完美~还是大虾的方法简单啊~膜拜
这个方法是对每个页面都禁用缓存了,其实只对要授权的页面禁用缓存就可以了,恰好授权页面使用了重写的AuthorizeAttribute,于是我就在这个重写的AuthorizeAttribute中加上一句:
/// <summary> /// 请求授权时执行 /// </summary> /// <param name="filterContext"></param> public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); filterContext.HttpContext.Response.Cache.SetNoStore(); //禁止缓存,防止退出登陆后,还能后退到登录时的页面 }