session过期

Java中解决(extjs或jquery)session过期退出登录问题

*爱你&永不变心* 提交于 2019-12-04 02:11:01
解决两种情况下的用户访问超时: a)普通http请求的session超时; b)异步http请求的session超时,如果使用extjs后大部分的界面刷新都是异步的ajax请求。 不管是那种类型的http请求总是可以由一个过滤器来捕捉。 分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。 其实对于常见的ajax框架,header中还有标示自己身份的header信息。 对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。 对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测 头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。 服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时: if(r.getHeader("x-requested-with")!=null && r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ response.setHeader("sessionstatus","timeout"); } 使用Ext

基于jquery的全局ajax函数处理session过期后的ajax操作

别等时光非礼了梦想. 提交于 2019-12-04 02:10:45
做web常常需要考虑session过期的问题,session过期就让页面跳转到登录界面去,但是存在这样一个问题,当页面过期后,用户请求后台的方式有两种:传统方式和异步请求方式,传统方式倒好解决,请求到后台,拦截到过期的操作,直接跳转,但是异步请求不会刷新整个页面,因此对session过期的处理也不能按往常的方式,需要另外的操作。 具体思路:拦截器中判断是否为ajax请求 —— 是ajax请求则返回一个消息 ——页面添加一个全局的ajax处理事件,对消息进行判断,如果是报告session过期,则location到登录页面 第一步,拦截器判断是否为ajax请求: if(request.getHeader("x-requested-with")!=null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //是ajax请求,则返回个消息给前台 PrintWriter printWriter = response.getWriter(); printWriter.print("{sessionState:timeout}"); printWriter.flush(); printWriter.close(); }else{ //不是ajax请求,则直接跳转页面 } 第二步

PHP中解决ajax请求session过期退出登录问题

风格不统一 提交于 2019-12-02 22:37:17
PHP判断一个请求是Ajax请求还是普通请求 1、 session过期,如果直接是url请求,或者用户在打开的系统页面中直接清除缓存及cookie信息,可直接在php的入口文件中调用以下封装的方法,进行session信息判断以及页面的跳转,如: if(empty($_SESSION['sessionid']) || empty($_COOKIE['PHPSESSID'])){ echo "<script>"; echo "alert('用户过期,请重新登陆!');"; echo "parent.window.parent.window.location.href = '/index.php';"; echo "</script>"; } 2、 如果是页面保持着,但是10分钟之内没有做任何操作,页不知道是否过期,点击操作按钮,例如保存等,ajax请求已经进行,将会把页面的html打印出来,不能正常的弹出提示窗口,跳转到登陆页。 项目中进行ajax请求的操作很多,ajax的操作已经进行不能中断,不可能在每个ajax请求中都调用我们封装好的判断session是否过期的逻辑,将增加工作负担。我考虑在php的入口代码中调用已经封装好的session过期判断,其返回标识如 echo "timeout";exit; 在引用的jquery.js库中找到.ajax中调用的done方法

Ajax Session Timeout处理

∥☆過路亽.° 提交于 2019-12-02 15:06:21
对于session过期跳转的问题,很简单,就是一个过滤器,然后判断session为空?跳转:继续。但是对于ajax的请求,需要做特殊处理,见下面代码中的 // 此处考虑ajax操作session过期的操作,如果ajax请求过程中session过期,则指定过期状态码为:911. String requestType = req.getHeader("X-Requested-With"); 因为ajax请求的时候请求头是:X-Requested-With,so我们可以根据该请求头做session过期处理。 下面是过滤器的实现,可以作为参考。 package com.***.action.util; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax