我正在使用Angular Loopback SDK并尝试实现一个401处理程序,可以自动检测用户何时需要进行身份验证。 Loopback使用401响应数据请求,我使用它来调用登录对话框。基本上使用此处描述的策略 -
但是,如果用户提供了错误的凭据,那么Loopback会发出401并再次调用401处理程序....我应该如何区分真正的AUTH失败的401和失败的登录尝试?
答案 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);
}
};
});