2013-04-15 38 views
1

目前我们正在使用服务器端的Dropwizard和客户端的RequireJS,Backbone来开发REST应用程序。在客户端处理身份验证错误

我们的认证模型是基于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在服务器端过滤器一般,搭售一些逻辑到服务器端代码。

我敢肯定,有更好的方法来处理客户端的服务器身份验证错误,我想知道他们。

回答