失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 勤于思考: ASP.NET MVC 注销后 使用浏览器 【后退】 不使用缓存页面

勤于思考: ASP.NET MVC 注销后 使用浏览器 【后退】 不使用缓存页面

时间:2024-04-25 06:45:44

相关推荐

勤于思考: ASP.NET MVC 注销后 使用浏览器 【后退】 不使用缓存页面

经过自己和朋友一起探讨,总结出三种方法实现。

方法一:

<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 注销后 使用浏览器 【后退】 不使用缓存页面》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。