解决AJAX在用户登录失效后返回登录页面的问题
后端AJAX API,Session过期,登录失效,直接跳转(redirect)到登录页。(后端Shiro、Spring Security等都支持这个功能)
对于全站AJAX的应用,当然不存在redirect重定向到登录页面的做法(建议直接返回HTTP Code 401),但是对于某些前后端没有分离的应用,当用户session失效时,后端可能会重定向到登录页面。那对于ajax请求,后端重定向后,返回的ajax内容是一个html页面,怎么办呢?
总体的思路是在ajax工具的拦截器中做一些特殊的判断。
1、jquery ajax的具体解决办法(示例)如下:
|
代码说明,注意到最后一个if,判断如果ajax返回的是一个页面,则直接document.write显示(如果是登录页,就会直接替换到当前的其他页面)。
2、axios的判断方法如下(原理一样):
|
原理同上面一样,只不过在error处,也做了一个判断。因为后端页面重定向时,在axios中,是不会执行response =>{...}的,但是error=>{...}函数会执行。这个方法官方文档没说明,也是我摸索了十几分钟才试出来的。特此记录分享出来。
另外,后端也有进一步优化的空间——那就是精确判断Request请求是否为AJAX类型。如果是AJAX请求则未登录时返回401状态码,如果不是AJAX请求,则重定向到登录页面。
优化空间在于,怎么尽量准确地判断请求是否为AJAX类型?我写了一个Java方法如下:
|
注意看代码注释,很显然,这个方法不够准确,甚至在某些情况下完全失效。
那怎么办呢,可以根据Header内容来判断,通常AJAX请求的header里面有一些特点的内容,这有助于精确判断请求是否为AJAX类型。另外,判断header中accept的值,如果是类似下面的格式(以application/json开头),通常都是AJAX请求:
|
解决AJAX在用户登录失效后返回登录页面的问题相关推荐
- js实现未登录用户跳转到登录页面登录完成后返回原页面
首先要获取未登录用户浏览的当前页面的路径: var preUrl=window.location.href; 在提示登录的跳转链接里利用url传参: window.open("../logi ...
- Linux登录输入密码后返回登录界面
问题: 登录Linux时,输入的密码正确,但是屏幕闪两下后又返回登录界面,进不了桌面. 原因: 用户目录下的.Xauthority文件权限变成root,登录时无法读取,使用ls命令查看,所有者是roo ...
- uniapp之 登录成功后返回之前页面
目录 前言 分析 第一步 代码 代码 一 方式二 温馨提示 小结 前言 在完善小程序效果时,想新增一个当用户没有登录时 点击跳转到某个页面实现交易啊,或者添加什么功能时,检验有没有登录 若没有的话 , ...
- 防止登录成功后重复刷新页面跳回登录页面
登录action:system/Syslogin/sysLogin.do public String sysLogin() { try { //验证码验证 String yzm = Struts2Ut ...
- 西门子SMART LINE触摸屏用户密码失效,无法登录的解决办法
西门子SMART LINE触摸屏用户密码失效,无法登录的解决办法 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 有小伙伴反映,在使用SMART触摸 ...
- java session失效之后跳转_详解springmvc控制登录用户session失效后跳转登录页面
springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml 15 第二步,配置spring-mvc.xml 第三步,写拦截器SystemSe ...
- php ajax session,Ajax处理用户session失效
这次给大家带来Ajax处理用户session失效,Ajax处理用户session失效的注意事项有哪些,下面就是实战案例,一起来看一下. 在使用spingMVC的拦截器来处理用户session失效的问题 ...
- 解决 Adobe Acrobat Pro DC更新后提示登录激活问题
解决 Adobe Acrobat Pro DC 更新后提示登录激活问题 问题描述 解决方法 问题描述 Adobe Acrobat Pro DC在安装的时候使用"AMTEmu v0.9.2&q ...
- Spring Security 实战:登录成功后返回 JWT Token
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 170元买400元书的机会又来啦! 1. 前言 欢迎阅读 Spring Security 实 ...
最新文章
- 如何利用BP网络进行神经网络变量筛选
- 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」
- java accept encoding_Accept-Encoding gzip 乱码 和Okhttp的解决方法
- BZOJ4571:[SCOI2016]美味——题解
- Java中的异步等待
- python 字符串交集_Python序列--集合(set)
- asp.net 安装element ui_不用上官网,自己部署一套Element官方最新文档
- jmeter通过ant执行时报错 jmeter.log not found
- pythonopencv人脸相似度_图像相似度算法的个人见解(pythonopencv)-Go语言中文社区...
- 简述软件黑盒测试的方法,简述什么是黑盒测试方法
- 简单阻抗匹配电路及公式
- Excel技巧—快速插入空行技巧大集合
- day11_rabbitmq和redis
- 什么是API、什么是SDK、他们有什么区别?
- 玩转 Windows 10 中的 Linux 子系统
- spectral clustering谱聚类论文解读(上)
- 【论文】Saliency Detection: A Spectral Residual Approach阅读笔记
- 浙江环宇集团“营改增”项目启动会成功举办
- 了解Panda3D引擎的配置变量
- 经营者思维—赢在战略人力资源管理