2017-01-09 7 views
0

있어 전송, from here 촬영 :각도 2 http.post authservice 로그인을 여기에 빈 개체

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; 
     } 
     }); 
    } 

을 나는 짓을했는지 : 내 구성 요소에서

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; 
      } 
     }); 
} 

, 나는과 같이 가입하려고 해요 콘솔이 데이터를 실제로 전달하는지 여부를 판별하기 위해 회선을 따라 기록하고, 예. 모든 것이 잘 검사됩니다. 제외

는 전송 된 데이터는 내 익스프레스 콘솔에 따르면, 그 req.body 통해 오는 유일한 그냥 { }

입니다. req.headers은 콘텐츠 유형이 적절 함을 나타냅니다. 즉, Content-Type: application/json

POSTMan을 사용하여 API 엔드 포인트로 동일한 json 요청을 보내려고했습니다. 잘 작동합니다.

또 다른 트릭이 각도 2의 http.post 슬리브가 있습니까?

위의 코드에 어떤 문제가 있습니까?

+0

확인은 데이터를 전달하거나하지? 여기서 약간의 모순. 데이터가 전달된다고 말하는 한편, 데이터는 단지 {{}'입니다. :) – Alex

+1

@ AJT_82 혼란스럽게 생각합니다. 빈 객체'{}'만이 http.post가 보내는 유일한 것입니다. – Rexford

+0

'this.model '은 무엇입니까? –

답변

4

여기에 답변을 게시하면 도움이 될 것입니다. 포인터에 대한 @cartant에게 감사드립니다. 더 자세히 살펴 봐야했습니다.

  • 헤더를 명시 적으로 설정할 필요가 없었습니다. 기본적으로 게시물을 보내려면 Content-Type: application/json
  • 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; 
         } 
        }); 
    }