Loopback Angular SDK响应码401拦截

Loopback Angular SDK response code 401 intercept

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

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

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

为什么这么糟糕?

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

还有一个错误消息负载,您可以检查它 可能 允许不同的消息传递,因此您可以显示消息 "session expired" 而不仅仅是 "you are logged out, please login." 但总的来说,最好保持通用并轻轻地要求重新登录。

当后端可以确定 username/email 在系统上时,您也可以发送不同的代码,但这通常是安全禁忌,您必须覆盖环回默认值。

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

        $location.path('/login');

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