1

Попытка выяснить, какая базовая аутентификация с помощью Angular 2. Я хочу, чтобы мой компонент проверял токен, и если он существует, перейдите в нужное место, но если оно не отображает сообщение об ошибке, обслуживание. Вот вызов службы:Доступ к токенам и данным ответа

this._loginService.login(loginQuery) 
     .subscribe(
      (token: any) => this._router.navigate(['User', { username: user }]), 
      (data) => { this.errorMessage = data.ErrorMessage; } 
     ) 

Вот код для службы:

return this._http.post('serivcelink, 
          body, 
          {headers:headers}) 
     .map((res : any) => { 
      let data = res.json(); 
      this.token = data.TeamMember.UserName; 
      localStorage.setItem('token', this.token); 
     }); 

Я получаю маркер поведения я хочу, за исключением, что я не получаю доступ к объекту ответа в компонент и как таковой не может отобразить сообщение об ошибке.

Как я могу проверить токен и получить доступ к данным ответа?

ответ

0

Вы можете использовать, если заявление, чтобы проверить, если ваш маркер существует, в противном случае вывести сообщение об ошибке:

this._loginService.login(loginQuery) 
     .subscribe(
      (data: any) => { 
       if (localStorage.getItem('token')) { 
        this._router.navigate(['User', { username: user }]) 
       } else { 
        this.errorMessage = data.ErrorMessage; 
       } 
      } 
     ) 
+0

Спасибо, это то, что я искал. Я не был уверен в синтаксисе. – Bob

0

Вы должны вернуть что-то в пределах map обратного вызова, то есть this.token в вашем случае:

return this._http.post('serivcelink, 
         body, 
         {headers:headers}) 
    .map((res : any) => { 
     let data = res.json(); 
     this.token = data.TeamMember.UserName; 
     localStorage.setItem('token', this.token); 
     return this.token; // <------- 
    }); 

Что вы возвращаетесь будет получать в качестве параметра в функцию обратного вызова метода subscribe.

+0

Спасибо за ваш ответ. Это позволяет мне вернуть ответ, но затем нарушает поведение, которое я хочу от своей «подписки». Последующий вопрос тогда будет лучшим способом проверить токен в методе 'subscribe' до изменения маршрута? – Bob

Смежные вопросы