Rest 在客户端处理身份验证错误

Rest 在客户端处理身份验证错误,rest,authentication,backbone.js,jersey,dropwizard,Rest,Authentication,Backbone.js,Jersey,Dropwizard,目前,我们正在开发一个REST应用程序,在服务器端使用Dropwizard,在客户端使用RequireJS主干 我们的身份验证模型是基于cookie的。在每个请求上,web筛选器都会检查适当的cookie及其值,即令牌。如果令牌仍然有效,它将在过滤器链上转发请求,如果无效,它将以401响应 在客户端,它的结果如下: do an ajax request: success: render the rest of the content error: // got 4

目前,我们正在开发一个REST应用程序,在服务器端使用Dropwizard,在客户端使用RequireJS主干

我们的身份验证模型是基于cookie的。在每个请求上,web筛选器都会检查适当的cookie及其值,即令牌。如果令牌仍然有效,它将在过滤器链上转发请求,如果无效,它将以401响应

在客户端,它的结果如下:

do an ajax request:
    success:
        render the rest of the content
    error: // got 401
        stop whatever you were doing and redirect to the login page
这种方法显示出的唯一缺陷是,客户端首先必须下载实际页面,然后才能重定向到登录页面(当然是401)

例如,我有两个页面a.html和b.html。如果客户端正在浏览a.html页面,并且在其令牌过期一段时间后,首先需要下载b.html,它将在后台执行ajax请求(见上文),然后我将能够将其重定向到登录页面:

a.html (200) -> token expired -> b.html (200) -> login.html (200) 
到目前为止,我在我们编写的每个REST应用程序中都使用了这种错误处理方式。我想看到的是,例如:

a.html (200) -> token expired -> login.html (200) 
但这需要例如,在服务器端过滤器中硬编码登录页面url,并且通常需要将一些逻辑绑定到服务器端代码中


我确信在客户端有更好的方法来处理服务器身份验证错误,我想知道这些错误。

为什么不使用Dropwizard内置身份验证[1]?正如邮件列表[2]中所述,您可以编写自己的BasicAuthProvider,然后在其中访问HttpContext

希望能有帮助

再见,皮耶罗

[1]

[2]