[英]Angular 7 - Post method called twice on 400 Bad Request
我有一个带有登录页面的 angular 应用程序。 我们已经设置了可配置的最大重试次数。 登录页面按预期成功运行。 问题在于失败。 每次失败的尝试次数都会加倍。 例如:如果没有。 允许的重试次数为 6,帐户在第三次尝试时被锁定,而不是允许直到 6 次。
我发现问题是由于登录失败时发生两次调用 API。但是没有编写代码从 angular 调用两次 api。
我也调试过代码,发现http客户端服务的错误块是在api完成第二次调用后才调用的。
所以我的问题是为什么会发生这种情况,为什么登录 API 在失败时被调用两次(400 错误请求)?
任何帮助都会有很大帮助。
angular中的认证服务代码:
authenticate(userName: string, password: string, authenticationType: string) {
let url = `${this.authenticationServiceURL}api/login`;
const un: string = userName;
let currentUser = new AuthenticatedUser();
currentUser.userName = userName;
const encryptedPassword = this.encryptionService.encrypt(password, environment.encryptionKey);
url += `?username=${un}`;
url += `&password=${encodeURIComponent(encryptedPassword)}`;
url += `&loginType=${authenticationType}`;
const obj = {};
return this.http.post(url, obj).pipe(
map((result: AccessToken) => {
if (result) {
if (result.access_token) {
currentUser = this.buildCurrentUserFromToken(result.access_token);
this.currentUser = currentUser;
sessionStorage.setItem('token', `${'Bearer '}${currentUser.token}`);
localStorage.setItem(LocalStorageNames.CURRENTUSER, JSON.stringify(this.currentUser));
return currentUser;
}
}
return of(null);
})
);
}
糟糕的是,我有一个错误拦截器,它正在处理错误并在出错时重播请求。 这是这个问题的根本原因。 修改拦截器解决了这个问题。 感谢大家的回复,尤其是@jeremyBenks 为我指出了拦截器,我单独错过了错误拦截器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.