勤于思考: ASP.NET MVC 注销后 使用浏览器 【后退】 不使用缓存页面
2013-10-09 09:47
896 查看
经过自己和朋友一起探讨,总结出三种方法实现。
方法一:
在系统后台页面或者是模板页加入该句脚本,使后退和前进相互抵消。
方法二:
在系统后台页面加入Ajax请求访问服务器判断用户是否为登录状态,如果不是刷新该页
这种方法还是有点美中不足,就是点击后退的时候会闪现一下原先的页面,而且还要多一个请求,浪费资源。
方法三:
由于我是使用MVC3框架定义以上过滤器,不启用缓存设置
全局的话可以丢到Application_Start()程序启动时GlobalFilters.Filters集合中。
也可以单独对某个控制器使用或者某个动作使用。取决于你想要哪里不缓存。
感谢我的伙伴波神与我一起探讨这个问题,最后我确实犯2了那么鬼简单搞那么麻烦出来。
方法一:
<script type="text/javascript"> $(function () { window.history.forward(1); }); </script>
在系统后台页面或者是模板页加入该句脚本,使后退和前进相互抵消。
方法二:
<script type="text/javascript"> $(function () { $.post("/Account/isLogin", { random : Math.random() },function(data){ if (data != "True") { window.location.reload(); } }); }); </script>
在系统后台页面加入Ajax请求访问服务器判断用户是否为登录状态,如果不是刷新该页
这种方法还是有点美中不足,就是点击后退的时候会闪现一下原先的页面,而且还要多一个请求,浪费资源。
方法三:
public class NoCacheFilter : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache.SetNoStore(); } }
由于我是使用MVC3框架定义以上过滤器,不启用缓存设置
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new NoCacheFilter()); }
全局的话可以丢到Application_Start()程序启动时GlobalFilters.Filters集合中。
[NoCacheFilter] public class AccountController : Controller { [NoCacheFilter] public ActionResult LogOut() { Session["Users"] = null; Session["Department"] = null; Session.Clear(); Session.RemoveAll(); Cookie.ClearUserCookie(); Cookie.ClearUserCookie("url"); ClearCache(); return Redirect("/Account/Login"); } }
也可以单独对某个控制器使用或者某个动作使用。取决于你想要哪里不缓存。
感谢我的伙伴波神与我一起探讨这个问题,最后我确实犯2了那么鬼简单搞那么麻烦出来。
相关文章推荐
- ASP.NET MVC中使用jQuery时的浏览器缓存问题详解
- ASP.NET MVC中使用jQuery时的浏览器缓存问题
- ASP.NET MVC中使用jQuery时的浏览器缓存问题详解
- 大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题
- ASP.NET MVC中使用jQuery时的浏览器缓存问题
- ASP.NET使用表单验证在注销后使得浏览器后退按钮失效的简单方法
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面
- ASP.NET MVC3缓存之一:使用页面缓存
- ASP.NET MVC中使用OutputCache实现服务器端页面级缓存注意问题
- ASP.NET MVC 3 使用页面缓存 OutputCache 需要注意的问题
- ASP.NET MVC中使用jQuery时的浏览器缓存问题
- ASP.NET使用表单验证在注销后使得浏览器后退按钮失效的简单方法
- 2013-01-28 09:46 PHP阻止页面后退如何用PHP实现禁用浏览器的后退,使后退的页面失效或链接到别的地方?使用php禁止浏览器缓存?
- ASP.NET MVC使用SSI来实现页面静态化
- 在ASP.NET MVC中使用Juqery实现页面局部刷新
- 使用Filter跟踪Asp.net MVC页面加载(转)
- asp.net退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)
- ASP.NET MVC中的cshtml页面中的下拉框的使用
- asp.net mvc浏览器缓存和压缩的实现
- asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)