如果客户端长时间停留在我的网页上,令牌可能会过期.当客户端进行下一个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.
Web应用程序应该返回302个响应,因为它们总是被浏览器像代理人一样使用.更多信息,请参见my answer here.