簡體   English   中英

Angular 7 - 在 400 錯誤請求上調用兩次 Post 方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM