Session超时问题(AOP 过滤器)

public class TimeoutAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContextBase context = filterContext.HttpContext;
            HttpResponseBase response = filterContext.HttpContext.Response;
            HttpRequestBase request = filterContext.HttpContext.Request;
            if (context.Session["User"] == null)
            {
                if (request.IsAjaxRequest())
                    response.Status = "401 Session Timeout";
                else
                    response.Redirect("/Home/Login");//返回登录页
                filterContext.Result = new HttpUnauthorizedResult();//这一行保证不再执行Action的代码
                response.End();//必须加上这句,否则返回前台status始终是200
                return;
            }
            base.OnActionExecuting(filterContext);
        }
    }

本文参考 I鱿鱼的博客。。。。。

时间: 2024-11-09 23:21:46

Session超时问题(AOP 过滤器)的相关文章

ajax提交session超时跳转页面使用全局的方法来处理

来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在响应头里,再用一个全局的方法来处理session超时要跳转的页面. 在过滤器中写入如下方法:(未测试) public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws I

ajax session超时处理

1.问题:  客户端发出了一个ajax请求,但是此时session超时了 2.解决方法: 服务端: 在过滤器或者拦截器中,判断ajax请求类型,设置一个超时标志 客户端:ajax请求要求有一个全局处理函数 ,获取相应标志,做出相应处理   过滤器中加入: // 如果是ajax请求响应头会有,x-requested-with: if (req.getHeader("x-requested-with") != null && req.getHeader("x-re

Java设置session超时(失效)的三种方式

1.      在web容器中设置(此处以tomcat为例) 在E:\apache-tomcat-7.0.54\apache-tomcat-7.0.54\conf\web.xml中设置,以下是apache-tomcat-7.0.54中的默认配置 <!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout 

PHP jquery session超时处理

php: <?php header('sessionStatus:timeOut'); //is_ajax echo $_SERVER['HTTP_X_REQUESTED_WITH']; html:<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" sr

Spring mvc Interceptor 解决Session超时配置流程

最近公司内部框架中对Session超时这一功能未实现,由于采用iframe结构,Session超时后,当点击左侧系统菜单时,会在iframe的右侧再次弹出登陆框. 该问题是由于没有设置拦截器造成. 添加拦截器思路:当Session超时后,用户点击menu时,需要用Interceptor进行前项拦截,并判断此时session中是否还存在用户信息,如果不存在,将其指定登陆主页面. 如下代码: 1)首先在applicationContext-mvc.xml中加入mvc:interceptor标签. <

webix+springmvc session超时跳转登录页面

2016-10-30 13:11:56 引言 最近做项目,发现ajax请求不能在服务器中直接重定向到登录页面.查了些资料发现jquery的ajax请求有人给出了方法.但是webix的ajax请求和jquery的有些区别.这里模仿jquery的处理方式实现webix的ajax请求session超时跳转. 具体的做法: 1.查看webix.js源码发现webix.ajax只有请求前的监听函数 "onBeforeAjax", 要做到获取返回状态跳转登录页面必须要有个返回的监听函数,但是源码没

esayui session 超时跳转登录页面

 代码部分: ① web.XML部分配置代码 <!-- filter 权限认证 只对amf请求过滤 --><filter> <filter-name>authFilter</filter-name> <filter-class>com.lactec.framework.ac.filter.AuthFilter</filter-class></filter> <filter-mapping> <filter

jQuery easyui Session 超时返回登录页面

说明:测试设置失效时间为1分钟,登录成功后1分钟去点击操作处罚事件,执行①连接到com.lactec.framework.ac.filter.AuthFilter这个类判断执行的action操作. 判断session是否为空,超时就返回,我用的是ajax请求:如果是ajax请求响应头会有,x-requested-with: 设置: rep.setHeader("sessionstatus", "timeout");//在响应头设置session状态        

Ajax请求Session超时解决

web前端js代码: $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", complete : function(xhr, textStatus) { if (xhr.status == 520) {//如果返回状态码是520 window.location..reload();//刷新页面,执行登录逻辑 return; } } }); java代码: 1. 写一个filter i