勤于思考: 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 注销后 使用浏览器 【后退】 不使用缓存页面的更多相关文章
- Session注销后,浏览器后退仍显示Session信息
初学JavaWeb,在一次测试登录功能的时候,发现了登进去后,点击退出按钮注销session,浏览器按后退能够显示session信息,并且点击登录还能够不输入密码登录(前端页面没写JS限制输入后登录) ...
- 在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题
一.ASP.NET MVC中使用OutputCache实现服务器端页面级缓存 在ASP.NET MVC中,假如我们想要将某个页面(即某个Action)缓存在服务器端,可以在Action上标上以下特性: ...
- 学习“迷你ASP.NET MVC框架”后的小结
看蒋老师MVC的书第二个大收获可以是算是看了这个迷你ASP.NET MVC框架了,虽然它远不如真正ASP.NET MVC(下文简称“MVC”)那么复杂庞大,但在迷你版中绕来绕去也够呛的.这部分我看了几 ...
- ASP.NET MVC 发布后 IE 访问出现布局错乱问题
ASP.NET MVC 网页debug启动跑一切正常,[Chrome],[FireFox],[Edge],[IE11] 发布后,使用机器名访问,[IE11]出现布局不正常的问题, 在head里:加↓可 ...
- IIS8发布Asp.net MVC程序后出现404错误,处理程序staticFile
新部署的虚拟机,运行Asp.net MVC程序,出现如下图错误: 解决方法: 添加功能和角色->添加角色->Web服务器IIS->应用程序开发->Asp.net3.5 /Asp ...
- asp.net mvc后台操作之读写xml控制首页动态页面开关显示
一.背景 在asp.net mvc项目里,用户需要开拓几个活动版面,并以侧栏的方式呈现在首页右侧,几个活动时间不一致,为避免浏览者在活动未开放之时进入未开放的服务页面.因此不仅需要在活动代码中加入限制 ...
- ASP.NET MVC利用ajax把action的JavaScript注册到页面并执行
相信大家在做Webform时经常会遇到在页面的后台CS文件中根据数据运行结果修改页面显示样式.显示(隐藏).或者弹出框,当时我们会用到ScriptManage或者Page来向页面注册一段js来实现页面 ...
- ASP.NET实现IE下禁用浏览器后退按钮办法
在page_load方法里面增加如下代码: Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Parse("2010-1 ...
- ASP.NET MVC Session 过期验证跳转至登入页面
一.在要检查登入的控制器上继承 CheckLoginController 类 2. CheckLoginController 类的写法 using System; using System.Colle ...
随机推荐
- Effective C++ 35,36,37
35.使公有继承体现 "是一个" 的含义. 共同拥有继承意味着 "是一个".如 class B:public A. 说明类型B的每个对象都是一个类型A的对象, ...
- UBUNTU : Destination Host Unreachable
介绍我的系统的搭建的方式: WIN7 64 + VMWARE STATION,方式是进行桥接的方式.最近突然出现了问题,Ubuntu ping 外网或者 PING WIN 7 的时候,出现 Desti ...
- FileUpload控件预览图片
HTML代码: <tr> <td class="auto-style1">上传图片:</td> <td> <asp:FileU ...
- 设计模式之单利模式(C#语言描述,附视频下载地址)
今天来介绍所有设计模式中结构最简单的设计模式单例模式,它的核心结构中只包含一个被称为单例类的特殊类. 要想完成单例类的设计,我们要遵循一下原则即可: 1.一个类只能有一个实例 2.确保该实例对外有一个 ...
- linux 源代码安装mysql5.5
linux下源代码安装mysql过程例如以下: yum update yum upgrade yum install -y vim man wget yum install -y gcc gcc-c+ ...
- 多媒体开之之rtp 时间戳和负载类型介绍
(1)时间戳 (2)负载类型 (3)rtp 包头 (1)时间戳 有三个 一个实时间单位 timestamp_increse=(unsigned int)(90000.0 / framerate); / ...
- asp.net 后台多线程异步处理时的 进度条实现一(Ajax+Ashx实现以及封装成控件的实现)
(更新:有的同学说源代码不想看,说明也不想看,只想要一个demo,这边提供一下:http://url.cn/LPT50k (密码:TPHU)) 工作好长时间了,这期间许多功能也写成了不少的控件来使用, ...
- ES6之路
从工作到现在,虽然是PHP出身,一直都和JS形影不离,从JQ和原生处理页面,到后来被angular1的MVVM模式惊艳到,再到弃angular转战vue,到现在使用react,一路走来,跳坑无数,现在 ...
- 【BZOJ2083】[Poi2010]Intelligence test 二分
[BZOJ2083][Poi2010]Intelligence test Description 霸中智力测试机构的一项工作就是按照一定的规则删除一个序列的数字,得到一个确定的数列.Lyx很渴望成为霸 ...
- S2S4H整合注意问题
整合过程中出现问题记录: 1.The import javax.servlet.http.HttpServletRequest cannot be resolved 解决办法:在tomcat的lib目 ...