重写ajax方法实现异步请求session过期时跳转登录页面(转)
2018-01-22 15:12
886 查看
一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器java核心代码如下:
[java] view plain copy print?UserItem loginUser = (UserItem)request.getSession().getAttribute("loginUser");
if(loginUser == null) {
response.sendRedirect("/login.action");
}
网上一堆庸人给出一堆扯蛋的方法,主要有。
1.返回的字符串附加登录状态;(那么多,你愿意改么,而且前后端都得改,编码的时候还要总去考虑那个状态烦不烦)
2.修改http头信息;(装B深沉型)
3.修改jquery源文件判断;(勉强算个程序员,但是尽力不去动源,性能问题你还得解压再压缩,别人也不一定知道你改过源码)
我的解决方案跟第三种方法思路接近,重写ajax方法实现前置处理,代码如下:
[javascript] view plain copy print?jQuery(function($){
// 备份jquery的ajax方法
var _ajax=$.ajax;
// 重写ajax方法,先判断登录在执行success函数
$.ajax=function(opt){
var _success = opt && opt.success || function(a, b){};
var _opt = $.extend(opt, {
success:function(data, textStatus){
// 如果后台将请求重定向到了登录页,则data里面存放的就是登录页的源码,这里需要找到data是登录页的证据(标记)
if(data.indexOf('weinianjie') != -1) {
window.location.href= Globals.ctx + "/login.action";
return;
}
_success(data, textStatus);
}
});
_ajax(_opt);
};
});
大功告成,注意以上扩展需要放在你的所有ajax请求之前执行。
[java] view plain copy print?UserItem loginUser = (UserItem)request.getSession().getAttribute("loginUser");
if(loginUser == null) {
response.sendRedirect("/login.action");
}
UserItem loginUser = (UserItem)request.getSession().getAttribute("loginUser");if(loginUser == null) { response.sendRedirect("/login.action");}这个对于普通页面来说完全没问题,但是在使用ajax的时候往往得不到想要的效果。因为页面根本没跳转,只是捕获到了登录页面的源码而已。
网上一堆庸人给出一堆扯蛋的方法,主要有。
1.返回的字符串附加登录状态;(那么多,你愿意改么,而且前后端都得改,编码的时候还要总去考虑那个状态烦不烦)
2.修改http头信息;(装B深沉型)
3.修改jquery源文件判断;(勉强算个程序员,但是尽力不去动源,性能问题你还得解压再压缩,别人也不一定知道你改过源码)
我的解决方案跟第三种方法思路接近,重写ajax方法实现前置处理,代码如下:
[javascript] view plain copy print?jQuery(function($){
// 备份jquery的ajax方法
var _ajax=$.ajax;
// 重写ajax方法,先判断登录在执行success函数
$.ajax=function(opt){
var _success = opt && opt.success || function(a, b){};
var _opt = $.extend(opt, {
success:function(data, textStatus){
// 如果后台将请求重定向到了登录页,则data里面存放的就是登录页的源码,这里需要找到data是登录页的证据(标记)
if(data.indexOf('weinianjie') != -1) {
window.location.href= Globals.ctx + "/login.action";
return;
}
_success(data, textStatus);
}
});
_ajax(_opt);
};
});
jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax=function(opt){ var _success = opt && opt.success || function(a, b){}; var _opt = $.extend(opt, { success:function(data, textStatus){ // 如果后台将请求重定向到了登录页,则data里面存放的就是登录页的源码,这里需要找到data是登录页的证据(标记) if(data.indexOf('weinianjie') != -1) { window.location.href= Globals.ctx + "/login.action"; return; } _success(data, textStatus); } }); _ajax(_opt); };});在登录页面的源码里面,你随便找个地方打个标记然后隐藏掉,比如我的标记就是weinianjie。对于$.get和$.post就不用说了吧,这两个方法都是调用了$.ajax方法的,所以也就自动获取了前置判断能力。
大功告成,注意以上扩展需要放在你的所有ajax请求之前执行。
相关文章推荐
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 重写ajax方法实现异步请求session过期时跳转登录页面
- 重写ajax方法实现请求session过期时跳转登录页面
- 重写ajax方法实现请求session过期时跳转登录页面
- 重写ajax方法实现异步请求session过期时跳转登录页
- ajax前置处理实现异步请求session过期时跳转登录页面
- 重写ajax方法实现异步请求session过期时跳转
- 前台ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面
- 重写 ajax 实现 session 超时跳转到登录页面实例代码
- 处理jquery的ajax请求session过期跳转到登录页面
- 当 jquery 发送 ajax 请求的时候遇到服务端session过期超时返回 302 跳转登陆页面的时候怎么办的处理方法
- java ajax请求session超时跳转登录页面
- ajax实现异步请求,不跳转页面的情况下,达到检验用户名等信息是否效果的功能!
- Ajax 提交请求,Session过期,跳转到登录页
- 记录问题:登录session过期,ajax请求被web security拦截,页面没有数据且没有重定向到login页面
- 实现session超时后自动跳转到登陆页面(前台JS,JAVA,判断是否Ajax请求)
- Ajax 实现session过期后退出到登录页面
- Ext6.x+springmvc+shiro框架下实现session过期跳转到登录页面