2017-01-09 9 views
0

を送ることがfrom hereを撮影したのAuthServiceログイン、だ角度2 http.post:ここでは空のオブジェクト

login(email: string, password: string): Observable<boolean> { 
    return this.http.post(
     apiURL + '/admin/login', 
     JSON.stringify({ email: email, password: password })) 
     .map((response: Response) => { 
      // login successful if there's a jwt token in the response 
      let token = response.json() && response.json().token; 
      if (token) { 
       // set token property 
       this.token = token; 

       // store username and jwt token in local storage to keep user logged in between page refreshes 
       localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token })); 

       // return true to indicate successful login 
       return true; 
      } else { 
       // return false to indicate failed login 
       return false; 
      } 
     }); 
} 

私のコンポーネントでは、私はそうのようにサブスクライブしようとしています:

login() { 
    this.loading = true; 
    console.log(this.model); 
    this.authenticationService.login(this.model.email, this.model.password) 
     .subscribe(result => { 
     if(result === true) { 
      this.router.navigate(['/']); 
     } else { 
      this.error = 'Username or password is incorrect'; 
      this.loading = false; 
     } 
     }); 
    } 

私がやりました行に沿ってコンソールログが記録され、データが実際に渡されているかどうかが確認されます。すべてがうまくチェックされます。除き

は、送信されたデータは、私のエクスプレスコンソールによると、それはreq.bodyてくるだけのことだだけ{ }

です。 req.headersは、コンテンツタイプが適切であることを示します。つまり、Content-Type: application/json

POSTManを使用してAPIエンドポイントに同じjsonリクエストを送信しようとしました。正常に動作します。

別のトリックアングル2のhttp.postスリーブがありますか?

上記のコードで何が問題になっていますか?

+0

[OK]を、渡されたデータやないですか?ここには少し矛盾があります。一方でデータが渡され、他方でデータがちょうど '{}'であると言います。 – Alex

+1

@ AJT_82混乱して申し訳ありません。つまり、空のオブジェクト '{}'だけがhttp.postが送るものです。 – Rexford

+0

'this.model'とは何ですか? –

答えて

4

ここに回答を投稿すると、誰かを助けるかもしれません。ポインタのための@cartantに感謝します。私はちょうど近づかなければならなかった:

  • 私は明示的にヘッダーを設定する必要はなかった。既定では、ポストセンドContent-Type: application/json
  • I DID NOT送信するデータをストリング化する必要があります。

    login(email: string, password: string): Observable<boolean> { 
    // this is optional 
    // let headers = new Headers({ 'Content-Type': 'application/json' }); 
    // let options = new RequestOptions({ headers: headers }); 
    
    return this.http.post(
        apiURL + '/admin/login', 
        { email: email, password: password }, 
        // options 
        ) 
        .map((response: Response) => { 
         // login successful if there's a jwt token in the response 
         let token = response.json() && response.json().token; 
         if (token) { 
          // set token property 
          this.token = token; 
    
          // store username and jwt token in local storage to keep user logged in between page refreshes 
          localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token })); 
    
          // return true to indicate successful login 
          return true; 
         } else { 
          // return false to indicate failed login 
          return false; 
         } 
        }); 
    } 
    
関連する問題