重写ajax方法实现异步请求session过期时跳转登录页面
发布时间:2020-12-16 03:34:09 所属栏目:百科 来源:网络整理
导读:转载自:http://www.jb51.cc/article/p-eqfagpnq-bcn.html 一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器Java核心代码如下: [java] view plain copy UserItemloginUser=(UserItem)request.getSession().getAttribute( "loginUser" )
转载自:http://www.52php.cn/article/p-eqfagpnq-bcn.html
一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器Java核心代码如下: 这个对于普通页面来说完全没问题,但是在使用ajax的时候往往得不到想要的效果。因为页面根本没跳转,只是捕获到了登录页面的源码而已。网上一堆庸人给出一堆扯蛋的方法,主要有。 1.返回的字符串附加登录状态;(那么多,你愿意改么,而且前后端都得改,编码的时候还要总去考虑那个状态烦不烦) 2.修改http头信息;(装B深沉型) 3.修改jQuery源文件判断;(勉强算个程序员,但是尽力不去动源,性能问题你还得解压再压缩,别人也不一定知道你改过源码) 我的解决方案跟第三种方法思路接近,重写ajax方法实现前置处理,代码如下:
[javascript]
copy
在登录页面的源码里面,你随便找个地方打个标记然后隐藏掉,比如我的标记就是weinianjie。对于$.get和$.post就不用说了吧,这两个方法都是调用了$.ajax方法的,所以也就自动获取了前置判断能力。 大功告成,注意以上扩展需要放在你的所有ajax请求之前执行。
说明:Globals.ctx 可以通过以下函数来获取: function getRootPath() { // var pathName = window.location.pathname.substring(1); // var webName = pathName == '' ? '' : pathName.substring(0,pathName.indexOf('/')); // return window.location.protocol + '//' + window.location.host + '/' + webName + '/'; return window.location.protocol + '//' + window.location.host; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |