繁体   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