首页 > 解决方案 > 将 HttpClient 响应转换为布尔值

问题描述

我正在authService调用我的后端端点进行身份验证,我只想将真/假返回给另一个组件,以便显示/隐藏错误消息。最重要的是,成功后我想将令牌存储在localStorage.

signIn = (signInFormValue) => {
    var response = this.authService.authenticate(signInFormValue.username, signInFormValue.password)
      if(response) {      
        console.log(response)
        this.invalidCredentials = false;
      } else {
        this.invalidCredentials = true;
      }      
  }

哪个叫这个

authenticate(username: string, password: string) {
    return this.callAuthenticationEndpoint(username, password).pipe(map(res =>{
      localStorage.setItem('token', res.headers.get('Authorization');
      return true;
    }, err => {return false}))
  }

  callAuthenticationEndpoint(username: string, password: string): Observable<any> {
    var url = this.AUTHENTICATE_URL + 'username=' + username + '&password=' + password;
    return this.http.get(url, {observe: "response"});
  }

问题是,response不是真/假,而是

在此处输入图像描述

标签: angularrxjsangular-httpclient

解决方案


你从服务中收到的是一个 Observable。要获得你想要的布尔响应,你必须订阅这个 Observable:

signIn(signInFormValue){
 return this.authService
        .authenticate(signInFormValue.username, signInFormValue.password)
        .subscribe(response => console.log(response));
}

推荐阅读