如何正确处理Ajax调用的登录过期?
我的Web应用程序由对服务器端RESTful API的大量Ajax调用组成.每次客户登录我的网站时,登录页面将从服务器获取一个JWT(
JSON Web令牌)令牌,并将其作为客户端的cookie存储. (我选择将其存储为cookie,因为它是让浏览器自动发送的唯一方式,它比
HTML5 Web Storage更安全).令牌中有一个字段描述令牌的到期日期.对于每个Ajax调用,令牌将一起发送以进行身份??验证.
如果客户端长时间停留在我的网页上,令牌可能会过期.当客户端进行下一个HTTP请求(不仅仅是REST调用)时,服务器将检测它.我使用一个servlet过滤器拦截所有的HTTP请求并检查令牌到期.如果令牌过期,将发送重定向到登录页面的响应. 但是,上述方法存在一个问题:“如何在客户端正常处理重定向到登录页面的响应?” >对于非Ajax发起的HTTP请求,我可以依靠浏览器来处理重定向到登录页面的响应,并使页面自动跳转. 还是我错了? 一些参考: 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:
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |