Ext异步请求session过期解决方案
转:lym6520
Ext异步请求session过期解决方案
最近在开发后台管理系统,前台使用了Ext框架,在开发过程中,发现session过期时客服端仍然不断的进行了N次请求后才停止,我想很多使用过Ext框架开发的同学都遇到过同样的问题吧!今天我就来说说我的解决方案吧!
前端通过Ext.Ajax.request的requestcomplete事件来进行session过期验证处理的:
Js代码
Js代码
最后看看过滤器的处理方式,以下是session超时处理的部分的代码:
Java代码
Ext异步请求session过期解决方案
最近在开发后台管理系统,前台使用了Ext框架,在开发过程中,发现session过期时客服端仍然不断的进行了N次请求后才停止,我想很多使用过Ext框架开发的同学都遇到过同样的问题吧!今天我就来说说我的解决方案吧!
前端通过Ext.Ajax.request的requestcomplete事件来进行session过期验证处理的:
Js代码
- // Default headers to pass in every request
- Ext.Ajax.defaultHeaders = {
- 'Request-By': 'Ext' //标识ajax请求
- };
-
- // ajax回调函数处理系统退出
- Ext.Ajax.on('requestcomplete',checkSessionStatus, this);
- function checkSessionStatus(conn,response,options){
- var json = Ext.decode(response.responseText);
- if(typeof json == 'object'
- && !json.success
- && json.timeout){
- alert("登入超时,系统将自动跳转到登陆页面,请重新登入!");
- top.window.location.href = json.redirectUri;
- }
-
- }
Js代码
- // Default headers to pass in every request
- Ext.Ajax.defaultHeaders = {
- 'Request-By': 'Ext' //标识ajax请求
- };
1.gif (16.29 KB, 下载次数: 1)
最后看看过滤器的处理方式,以下是session超时处理的部分的代码:
Java代码
- String ajaxTag = req.getHeader("Request-By");//Ext
-
- if(ajaxTag == null || !ajaxTag.trim().equalsIgnoreCase("Ext")){
- resp.sendRedirect(this.redirectUri);
- }else{
- resp.addHeader("sessionstatus", "timeout");
- Map<String, Object> result = new HashMap<String, Object>();
- result.put("success", false);
- result.put("timeout",true);
- result.put("redirectUri", this.redirectUri);
- PrintWriter out = resp.getWriter();
- out.print(Json.object2Json(result));
- out.flush();
- out.close();
- }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论