Loopback Angular SDK响应代码401拦截

时间:2015-06-17 15:53:27

标签: angularjs authentication loopback

我正在使用Angular Loopback SDK并尝试实现一个401处理程序,可以自动检测用户何时需要进行身份验证。 Loopback使用401响应数据请求,我使用它来调用登录对话框。基本上使用此处描述的策略 ​​-

http://docs.strongloop.com/display/public/LB/AngularJS+JavaScript+SDK#AngularJSJavaScriptSDK-Handling401Unauthorized

但是,如果用户提供了错误的凭据,那么Loopback会发出401并再次调用401处理程序....我应该如何区分真正的AUTH失败的401和失败的登录尝试?

1 个答案:

答案 0 :(得分:0)

为什么那么糟糕?

如果用户不知道如何多次登录,您应该能够从同一状态反复触发登录对话框,对吧?如果您已经显示对话框,请不要再次触发它并显示内联的“登录失败”消息。或者使用/ login路由并拦截任何未经授权的401并发送到该页面。

还有一个错误消息有效负载,您可以检查可能允许不同的消息传递,因此您可以显示消息“会话已过期”,而不仅仅是“您已注销,请登录”。但总的来说,最好保持通用,只需轻轻地要求重新登录。

当后端可以确定用户名/电子邮件在系统上时,您也可以发送不同的代码,但这通常是安全禁止,您必须覆盖环回默认值。

$httpProvider.interceptors.push(function($q, $location) {
  return {
    responseError: function(rejection) {
      if (rejection.status === 401) {

        $location.path('/login');

      }
      return $q.reject(rejection);
    }
  };
});