2017-09-05 7 views
2

Hallo allerseits Ich habe ein Problem mit meinem Login-Formular auf Ionic 2. Wenn ich login Token wird gespeichert gespeichert und umleiten auf eine andere Seite, aber Benutzerdaten werden nicht auf Android oder angezeigt IOS, weil Token nicht verfügbar ist. Ich stelle fest, dass ich die Seite neu laden muss, in der lokalen Umgebung funktioniert "location.reload()" perfekt und die Daten des Benutzers sind verfügbar, funktionieren aber nicht, wenn ich mich bei Google Play und im App Store anmelde.Wie kann ich Seite mit Ionic 2 neu laden

Ich habe einige Möglichkeiten versucht, es neu zu laden, funktioniert aber nicht auf Android und IOS. Was kann ich tun?

Anmeldung Funktion

loginForm(){ 
const data = { 
    "username" : this.login.value.username, 
    "email" : this.login.value.username, 
    "password" : this.login.value.password, 
} 
this.dataService.loginUser(data).subscribe(
    (data) => { 
     let token = data.key; 
     this.dataService.checkAccessUserGroup(token).subscribe(
     (data) => { 
      if(data[0] == 200){ 
      this.storage.set('access_token', token); 
      //this.appCtrl.getRootNav().setRoot(HomePage); 
      //this.navCtrl.setRoot(HomePage); 
      //this.appCtrl.getRootNav().setRoot(this.navCtrl.getActive().component); 
      //this.navCtrl.push(HomePage); 
      //this.appCtrl.getRootNav().push(IndexPage); 
      //location.reload() 
      this.navCtrl.setRoot(HomePage).then(() =>{ 
       this.navCtrl.popToRoot(); 
      }); 

      } 
      if(data[0] == 500){ 
      this.generateAlert("Error",'No tienes permisos adecuados para acceder. Ponte en contacto con el administrador de tu Deck.'); 
      } 
     }, 
     (err) => { 
      if(err.status == 400){ 
      this.generateAlert("Error",'No hemos podido verificar tus datos. Intentalo de nuevo'); 
      } 
     } 
    ); 
    }, 
    (err) => { 
     if(err.status == 400){ 
     this.generateAlert("Error",'Usuario o constraseña no válido. Intentalo de nuevo'); 
     } 
    } 
); 
} 

Anmeldung html

<ion-content padding id="container-home" style="background-image:url('assets/img/bg-login.png')"> 

    <ion-row> 
    <ion-img class="logo-md" width="120" height="120" src="assets/img/mydecklogocolor.png"></ion-img> 
    </ion-row> 

    <ion-row id="auth-login"> 
    <ion-col col-12 no-padding> 
     <ion-row class="header"> 
     <h3>Ingresa</h3> 
     </ion-row> 
     <form id="login-container" [formGroup]="login" (ngSubmit)="loginForm()"> 
     <ion-row> 
      <ion-item> 
      <ion-input type="text" formControlName="username" 
         class="input-md"placeholder="Correo electrónico/usuario"></ion-input> 
      </ion-item> 
      <ion-item> 
      <ion-input type="password" formControlName="password" 
         class="input-md" placeholder="Contraseña"></ion-input> 
      </ion-item> 
     </ion-row> 
     <ion-row> 
     <button ion-button class="auth-btn" type="submit" [disabled]="!login.valid">Ingresar</button> 
     </ion-row> 
     </form> 
     <ion-row> 
     <a href="">¿Olvidaste tu contraseña?</a> 
     </ion-row> 
    </ion-col> 
    </ion-row> 

</ion-content> 
+0

Sie meinen 'this.storage.set ('access_token', Token);' nicht rechtzeitig eingestellt? Welcher Speicher ist das? –

+0

Das ist die ionische Speicherung https://ionicframework.com/docs/storage/ – nailujpeloz

Antwort

1

Bei Ionic Lagerung, gibt es ein Versprechen für beide gesetzt und Funktionen erhalten. Sie sind also asynchron.

Sie könnten also versuchen:

this.storage.set('access_token', token).then(()=>{ 

     this.navCtrl.setRoot(HomePage); 
}); 

Sie brauchen nicht auf "die Seite aktualisieren". Sie können Home Page einfach als root festlegen, sobald Sie mit dem Speichern des Tokens fertig sind.

Verwandte Themen