如何正确处理Ajax调用的登录过期?

前端之家收集整理的这篇文章主要介绍了如何正确处理Ajax调用的登录过期?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Web应用程序由对服务器端RESTful API的大量Ajax调用组成.每次客户登录我的网站时,登录页面将从服务器获取一个JWT( JSON Web令牌)令牌,并将其作为客户端的cookie存储. (我选择将其存储为cookie,因为它是让浏览器自动发送的唯一方式,它比 HTML5 Web Storage更安全).令牌中有一个字段描述令牌的到期日期.对于每个Ajax调用,令牌将一起发送以进行身份​​验证.

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

但是,上述方法存在一个问题:“如何在客户端正常处理重定向登录页面的响应?”

>对于非Ajax发起的HTTP请求,我可以依靠浏览器来处理重定向登录页面的响应,并使页面自动跳转.
>对于Ajax发起的HTTP请求,似乎我需要为每个ajax调用的完成处理程序添加额外的逻辑,以检测重定向登录页面的响应,并强制使页面跳转.

还是我错了?

一些参考:

JWT (JSON Web Token) automatic prolongation of expiration

Which authentication strategy should I use for my API?

Implicit & Explicit authentication

地址1:

看来浏览器将会透明地处理302重定向.所以也许我可以只返回一个302重定向登录页面,无论是ajax调用还是纯页面访问.我会稍后再试

here

If the response is an HTTP redirect (status code 301,302,303 or
307),then it MUST be transparently followed (unless it violates
security or infinite loop precautions). Any other error (including a
401) MUST cause the object to use that error page as the response.

Catching 302 FOUND in JavaScript

How to manage a redirect request after a jQuery Ajax call

正是由于这个原因,web API不应该用302重定向来响应,而是在令牌已过期时有401未授权.

Web应用程序应该返回302个响应,因为它们总是被浏览器像代理人一样使用.更多信息,请参见my answer here.

原文链接:https://www.f2er.com/ajax/159881.html

猜你在找的Ajax相关文章