我的Web应用程序由许多服务器端的Ajax调用组成 RESTful APIs。每次客户登录我的网站时,登录页面都会得到一个 JWT 来自服务器的(JSON Web Token)令牌并将其存储为 cookie 在客户端。 (我选择将其存储为cookie,因为这是让浏览器自动发送它的唯一方法,据说它比HTML5 Web存储更安全)。令牌中有一个字段描述令牌的到期日期。对于每个Ajax调用,将发送令牌以进行身份验证。
如果客户端长时间停留在我的页面上,则令牌可能会过期。当客户端发出下一个HTTP请求(而不仅仅是REST调用)时,服务器将检测到它。我用了一个 servlet filter 拦截 all HTTP请求并检查令牌是否过期。如果令牌过期,a 重定向到登录页面 回复将被发送。
但是上面的方法存在一个问题:“如何优雅地处理 重定向到登录页面 在客户端响应?“
对于
non-Ajax发起HTTP请求,我可以依靠浏览器来处理重定向到登录页面的响应并自动跳转页面。对于
Ajax发起HTTP请求,似乎我需要添加额外的逻辑eachajax电话completion handler检测重定向到登录页面的响应和imperatively让页面跳转。
还是我完全错了?
一些参考:
添加1:
浏览器似乎会透明地处理302重定向。 所以也许我可以只返回302重定向到登录页面,无论是ajax调用还是普通页面访问。 我会尽力回复。
从 这里:
如果响应是HTTP重定向(状态代码301,302,303或 307),然后必须透明地遵循(除非它违反 安全性或无限循环预防措施)。任何其他错误(包括 401)必须使对象使用该错误页面作为响应。