2017-02-09 2 views
0

Я новичок в ионном и угловом, и, начиная с лет разработки .NET. Я пытаюсь несколько примеров онлайн, чтобы создать прототип логина с помощью Ionic 2.Ионные 2 проверяют наблюдаемые перед возвращением

Я получил WebAPI, работающий в фоновом режиме, просто возвращающий JSON true или false, в зависимости от того, правильно ли переданы учетные данные.

Я получил провайдер аутентификации, глядя, как это:

public login(credentials) { 
    if (credentials.email === null || credentials.password === null) { 
     return Observable.throw("Please insert credentials"); 
    } else { 

     this.result = this.http.post(this.CONST.APIUrl, JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader})).map(res => res.json()) 

     if (this.result) 
     { 
      this.currentUser = new User('Simon', '[email protected]'); 
     } 

     return this.result; 

    }} 

и Логин страницы, глядя, как это:.

public login() { 
    this.showLoading() 
    this.auth.login(this.registerCredentials).subscribe(allowed => { 
     if (allowed) { 
     setTimeout(() => { 
     this.loading.dismiss(); 
     this.nav.setRoot(HomePage) 
     }); 
     } else { 
     this.showError("Access Denied"); 
     } 
    }, 
    error => { 
     this.showError(error); 
    }); 
    } 

На данный момент он всегда регистрирует человека в Я понимаю, что это происходит потому, что это .result всегда имеет значение. Но как я могу проверить данные, возвращенные из API, прежде чем разрешить пользователю войти в систему?

ответ

0

Вы можете использовать Observable.do для создания побочных эффектов для наблюдаемого.

В функции входа:

public login(credentials) { 
    if (credentials.email === null || credentials.password === null) { 
     return Observable.throw("Please insert credentials"); 
    } else { 

     this.result = this.http.post(this.CONST.APIUrl, 
      JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader})) 
      .map(res => res.json()) 
      .do(userData=>{ 
       //check userData and set current user 
       this.currentUser = new User('Simon', '[email protected]'); 
       return userData;//make sure to return the value to subscribe 
      }); 
    return result; 
    }} 
Смежные вопросы