勤于思考: 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 ...
随机推荐
- HDU1323_Perfection【水题】
Perfection Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- android开发笔记之fastboot的使用
fastboot命令大全 在终端中.我们输入: fastboot 对于这些命令.我不解释,慢慢使用.慢慢的就会明确是怎么回事了. android分区 分区 作用 splash1 开机画面.使用Nand ...
- 网络通信数据处理 Xbytestring类
PS_Xbytestring a byte string for store low level data type 文件夹[TOC] PS_Xbytestring 文件夹TOC base info ...
- Cookie的写入,和读取
public static void SetLoginGmameInfo(string uid, string sid, string timestring, string sign) ...
- anaconda2下面安装opencv2.4.13.4完成----解决默认安装的问题----Thefunction is not implemented. Rebuild the library with Windows, GTK+ 2.x orCarbon support. If you are on Ubuntu or Debian, install libgtk2.0‑dev and pkg
转载自:http://blog.csdn.net/qingyanyichen/article/details/73550924 本人下载编译安装了opencv2.4.9,oppencv2.4.10,o ...
- Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!
using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...
- CentOS 配置网络
1.编辑ifcfg-eth0 vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.修改NOBOOT=yes 3.重启服务 service network re ...
- 一步一步 在mac上安装ubuntu
做为程序猿的你,一定听说过Linux甚至很喜欢Linux. 近期买了一台mac air,我很喜欢苹果的工艺,但作为屌丝程序猿,我依然喜欢基于Linux内核的Ubuntu 进行开发.以下我就讲述一步一步 ...
- PDO:: 数据访问抽象层 ? :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python循环导入的解决方案
解决循环import的方法主要有几种: 1.延迟导入(lazy import) 即把import语句写在方法或函数里面,将它的作用域限制在局部. 这种方法的缺点就是会有性能问题. 2. ...