当前位置:  开发笔记 > 前端 > 正文

如何优雅地处理Ajax调用的登录过期?

如何解决《如何优雅地处理Ajax调用的登录过期?》经验,为你挑选了1个好方法。

我的Web应用程序由许多服务器端的Ajax调用组成RESTful APIs.每次客户登录我的站点时,登录页面JWT将从服务器获得(JSON Web令牌)令牌并将其存储为cookie客户端.(我选择将其存储为cookie,因为这是让浏览器自动发送它的唯一方法,据说它比HTML5 Web存储更安全).令牌中有一个字段描述令牌的到期日期.对于每个Ajax调用,将发送令牌以进行身份​​验证.

如果客户端长时间停留在我的页面上,则令牌可能会过期.当客户端发出下一个HTTP请求(而不仅仅是REST调用)时,服务器将检测到它.我使用a servlet filter来拦截allHTTP请求并检查令牌是否过期.如果令牌过期,将发送重定向到登录页面的响应.

但是上面的方法存在一个问题:"如何在客户端优雅地处理重定向到登录页面的响应?"

对于non-Ajax发起的HTTP请求,我可以依靠浏览器来处理重定向到登录页面的响应并自动跳转页面.

对于Ajax发起的HTTP请求,似乎我需要向eachajax调用添加额外的逻辑completion handler来检测重定向到登录页面的响应imperatively并使页面跳转.

还是我完全错了?

一些参考:

JWT(JSON Web Token)自动延长到期时间

我应该为我的API使用哪种身份验证策略?

隐式和显式身份验证

添加1:

浏览器似乎会透明地处理302重定向.所以也许我可以只返回302重定向到登录页面,无论是ajax调用还是普通页面访问.我会尽力回复.

从这里:

如果响应是HTTP重定向(状态代码301,302,303或307),则必须透明地遵循(除非它违反安全性或无限循环预防措施).任何其他错误(包括401)必须使对象使用该错误页面作为响应.

在JavaScript中捕获302 FOUND

如何在jQuery Ajax调用之后管理重定向请求



1> MvdD..:

出于这个原因,Web API不应该响应302 redirect,但是401 unauthorized在令牌过期时.

Web应用程序应该返回302响应,因为它们总是被浏览器代理使用.有关更多信息,请参阅我的答案.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有