在Struts应用中,我们发出的请求都会经过 相应的拦截器进行相关处理,一般都会有一个用户登录拦截(Session失效拦截);一般请求的话,如果Session失效时,我们会跳到登录页面,可是如果我们采用AJAX请求时,将会返回登录页面的HTML代码,这肯定不是我们想要的,那么我们如何解决呢?请看以下步骤:
一、建立拦截器packagecom.xxx.planeap.interceptor;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.log4j.Logger;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.interceptor.AbstractInterceptor;importcom.xxx.common.contants.ConstantsKey;importcom.xxx.common.contants.SessionKey;importcom.xxx.planeap.domain.User;importcom.xxx.planeap.security.SecurityContextUtil;/****@authorGomaOMA1989@YEAH.NET*@versionv1.0*@since2012-05-31**/publicclassSecurityInterceptorextendsAbstractInterceptor{privatestaticfinallongserialVersionUID=1L;privateLoggerlogger=Logger.getLogger(SecurityInterceptor.class);@OverridepublicStringintercept(ActionInvocationinvocation)throwsException{//TODOAuto-generatedmethodstubStringclassName=invocation.getAction().getClass().getName();Stringaction=className.substring(className.lastIndexOf(".")+1,className.length());StringactionName=invocation.getProxy().getActionName();Stringresult;HttpServletRequestrequest=ServletActionContext.getRequest();HttpServletResponseresponse=ServletActionContext.getResponse();Stringtype=request.getHeader("X-Requested-With");Useruser=(User)ActionContext.getContext().getSession().get(SessionKey.CURRENT_USER);if(user==null){logger.debug("SECURITYCHECKED:NEEDTOLOGIN");if("XMLHttpRequest".equalsIgnoreCase(type)){//AJAXREQUESTPROCESSresponse.setHeader("sessionstatus",ConstantsKey.MSG_TIME_OUT);result=null;}else{//NORMALREQUESTPROCESSresult=ActionSupport.LOGIN;}}else{logger.debug("SECURITYCHECKED:USERHASLOGINED");SecurityContextUtil.setCurrentUser(user);booleanhanPerm=SecurityContextUtil.hasPerm(action,actionName);logger.debug("SECURITYCHECKED:PERMISSION—"+action+"."+actionName+"="+hanPerm);result=invocation.invoke();}returnresult;}}二、定义全局AJAX请求结束处理方法//全局的AJAX访问,处理AJAX清求时SESSION超时$.ajaxSetup({contentType:"application/x-www-form-urlencoded;charset=utf-8",complete:function(XMLHttpRequest,textStatus){//通过XMLHttpRequest取得响应头,sessionstatusvarsessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");if(sessionstatus=="timeout"){//这里怎么处理在你,这里跳转的登录页面window.location.replace(PlanEap.getActionURI("login"));}}});
产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;
日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉;
本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;
部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入;
如若转载,请注明出处:https://www.chanpinyuan.cn/42763.html;