[英]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.