Ajax Session失效跳转登录页面的方法
在Struts应用中,我们发出的请求都会经过 相应的拦截器进行相关处理,一般都会有一个用户登录拦截(Session失效拦截);一般请求的话,如果Session失效时,我们会跳到登录页面,可是如果我们采用AJAX请求时,将会返回登录页面的HTML代码,这肯定不是我们想要的,那么我们如何解决呢?请看以下步骤:
一、建立拦截器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package com.xxx.planeap.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.xxx.common.contants.ConstantsKey;
import com.xxx.common.contants.SessionKey;
import com.xxx.planeap.domain.User;
import com.xxx.planeap.security.SecurityContextUtil;
/**
*
* @author Goma OMA1989@YEAH.NET
* @version v1.0
* @since 2012-05-31
*
*/
public class SecurityInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
private Logger logger = Logger.getLogger(SecurityInterceptor. class );
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
String className = invocation.getAction().getClass().getName();
String action = className.substring(className.lastIndexOf( "." )+ 1 ,className.length());
String actionName = invocation.getProxy().getActionName();
String result;
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
String type = request.getHeader( "X-Requested-With" );
User user = (User) ActionContext.getContext().getSession().get(SessionKey.CURRENT_USER);
if (user == null ) {
logger.debug( "SECURITY CHECKED: NEED TO LOGIN" );
if ( "XMLHttpRequest" .equalsIgnoreCase(type)) { // AJAX REQUEST PROCESS
response.setHeader( "sessionstatus" , ConstantsKey.MSG_TIME_OUT);
result = null ;
} else { // NORMAL REQUEST PROCESS
result = ActionSupport.LOGIN;
}
} else {
logger.debug( "SECURITY CHECKED: USER HAS LOGINED" );
SecurityContextUtil.setCurrentUser(user);
boolean hanPerm = SecurityContextUtil.hasPerm(action, actionName);
logger.debug( "SECURITY CHECKED: PERMISSION---" +action+ "." +actionName+ "=" +hanPerm);
result = invocation.invoke();
}
return result;
}
}
|
二、定义全局AJAX请求结束处理方法
1
2
3
4
5
6
7
8
9
10
11
12
|
//全局的AJAX访问,处理AJAX清求时SESSION超时
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded;charset=utf-8" ,
complete:function(XMLHttpRequest,textStatus){
//通过XMLHttpRequest取得响应头,sessionstatus
var sessionstatus=XMLHttpRequest.getResponseHeader( "sessionstatus" );
if (sessionstatus== "timeout" ){
//这里怎么处理在你,这里跳转的登录页面
window.location.replace(PlanEap.getActionURI( "login" ));
}
}
});
|
也就是ajax发送请求时如果拦截返回一个表示就跳转,否则执行正常操作。
Ajax Session失效跳转登录页面的方法相关推荐
- session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面
1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...
- dwz ajax session超时跳转登录页(struts2自定义拦截器)
1.定义struts2拦截器(网上例子很多) 代码如下: package rt.intercepter;import java.util.Map;import javax.servlet.http.H ...
- dwz ajax session超时跳转登录页(struts2自定义阻碍器)
为什么80%的码农都做不了架构师?>>> 培养奇才的先决前提是公共的聪明以前的项目用的是springsecurity3.0,session超时主动跳转的登录页(这个页面可配), ...
- session过期跳转登录页面
2019独角兽企业重金招聘Python工程师标准>>> 项目需要做一个自动登出的功能,查询了网上的资料,一开始准备用session监听做,按照下面方式配置监听器 1.在项目的web. ...
- 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
当session失效后,用户点击当前页面会跳到登录页面,如果用户现在是在子页面,则当前的子页面跳到登录,用户感觉很不好,所以进行处理,例得无论点击那个页面,都找到顶端页面,再跳到登录页面. 处理的方式 ...
- java session失效之后跳转_详解springmvc控制登录用户session失效后跳转登录页面
springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml 15 第二步,配置spring-mvc.xml 第三步,写拦截器SystemSe ...
- ajaxsetup获取ajax的url_ajaxsetup,组合拦截器处理session过期,跳转登录页面
当前位置:我的异常网» Ajax » ajaxsetup,组合拦截器处理session过期,跳转登录页面 ajaxsetup,组合拦截器处理session过期,跳转登录页面 www.myexcepti ...
- 记一次IIS发布网站导致系统时常跳入登录页面的问题解决
服务器:winserver2012R2 iis 发布网站后,正常浏览网页,时常跳到登录页面,第一反应session过期,因为登录信息都存在session,但session 都是默认配置过期时间为20分 ...
- 防止登录成功后重复刷新页面跳回登录页面
登录action:system/Syslogin/sysLogin.do public String sysLogin() { try { //验证码验证 String yzm = Struts2Ut ...
最新文章
- php先分组后排序,PHP数组分组排序实例代码
- linux kbhit扫描键盘,(转)检测按键(Linux中kbhit()函数的实现)
- MyBatisPlus中updateById与updateAllColumnById方法区别
- UVA 712 S-Trees
- IntelliJ IDEA 默认快捷键大全
- myeclipse的电商系统模板_电商市场分析怎么做?3分钟了解程序员必备分析软件...
- oracle 尚未从池中获取连接,解决一个问题的思路 之“解决已经写满con.close() 仍然出现但是尚未从池中获取连接的连接池耗尽问题”...
- 微软将于6月24日发布下一代Windows
- 整理了5个JavaScript怪异行为及其原因
- C#写字板问题一二 —— C#+WinForm编程趣味入门实战-天轰穿.NET4趣味编程视频教程...
- Win11系统安装教程 教你安装原版Win11系统
- python算方差_python 算方差
- MySQL运行机制原理架构
- 高斯混合模型聚类算法和K-Means聚类算法
- 图像融合之泊松融合,原理讲解及C++代码实现(特别适合新手)
- 软件测试中如何测试算法?
- MyBaits-Plus快速使用
- 程序猿共勉:小富即安真要不得
- 38:计算多项式的导函数
- 走出你职业生涯的瓶颈[zt]