重写ajax方法实现异步请求session过期时跳转登录页面(转)
一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器java核心代码如下:
- 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方法实现前置处理,代码如下:
- 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过期时跳转登录页面
jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法, $.ajax=function(opt){ var _suc ...
- ajax前置处理实现异步请求session过期时跳转登录页面
第一篇博文,mark一下zhq[0]. 问题描述:用户页面,当session过期或都session注销后,普通页面后端都会有过滤器,session过期Redirect到登录页面,但是ajax请求后端只 ...
- 重写ajax方法实现请求session过期时跳转登录页面
jQuery(function($){ var _ajax=$.ajax; // 备份jquery的ajax方法 $.ajax=function(opt){ var _success = opt &a ...
- 详解springmvc控制登录用户session失效后跳转登录页面
springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml <session-config> <session-timeo ...
- JQuery--使用JQuery 的$.ajax 方法进行异步请求,导致页面闪烁
情景 目前有个需求是在文本框填入内容,自动触发keyup事件,下拉列表会自动过滤相应的选项,但是使用了$,ajax后发现,每次触发事件时,都导致整个网页闪烁,触发了全局ajax事件 代码片段 $.aj ...
- session过期时ajax请求刷新浏览器
ajax前置处理实现异步请求session过期时跳转登录页面 function checkLogin(json) { if (typeof(json) === 'string' && ...
- session过期,拦截ajax请求并跳转登录页面
1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...
- 重写$.ajax方法
/*重写Jquery中的ajax 封装壳*/ $(function () { (function ($) { //首先备份下jquery的ajax方法 var _ajax = $.ajax; //重写 ...
- 使用AJAX技术发送异步请求,HTTP服务端推送
使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于X ...
随机推荐
- Android ijkplayer详解使用教程
1.认识ijkplayer 最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的.最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移 ...
- 转 C#:使用MD5对用户密码加密与解密
C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式.本文总结了通用的算法并结合了自己的一点小经验,分享给大家. 一.使用16位.32位.64位MD5方法对用户名加密 1 ...
- Vectorized implementation
Vectorization Vectorization refers to a powerful way to speed up your algorithms. Numerical computin ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(6)-媒体文件MediaFile和文件类型MimeUtils
接着之前的第4篇,本篇的2个类,仍然是工具类.MediaFile,媒体文件,定义了一大堆的常量,真正的有用的方法就几个.isAudioFileType.isVideoFileType之类的. Mime ...
- 【Henu ACM Round #12 D】 Longest Subsequence
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 记录每个数字出现的次数cnt[x]; (大于1e6的直接忽略) 另外用一个数组z[1e6] 然后for枚举x 第二层for枚举x的倍 ...
- IAR FOR STM8 学习笔记 IAR工程的建立
STM8是ST意法半导体针对工业应用和消费电子开发而推出的8位单片机. 每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,STM8 8-bit MCU最大的特点是: · 内核: o 最高f ...
- Mac 终端操作数据库
名词解释: 事务:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节.事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这 ...
- asp.net Code学习一(vs code跨平台软件操作)
1.命令行: dotnet new -t web 创建web项目 dotnet new restore build pubilsh run test pack dotnet -info / -h do ...
- kibana中信息分类查询显示的方法
1.什么是kibana? kibana是ELK(elasticsearch+logstash+kibana)中的K,它是一个可灵活的分析和可视化平台,主要是显示数据以及根据这些数据绘出一些可视化图表, ...
- amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...