2017-09-05 11 views
2

皆さん、Ionic 2のログインフォームに問題があります。 私はログイントークンを保存して別のページにリダイレクトしますが、ユーザーのデータはAndroidやIOSはトークンが利用できないためです。私はページをリロードする必要があることを発見しました。ローカル環境では、 'location.reload()'は完璧に動作し、ユーザーのデータは利用できますが、Google PlayとApp Storeでpusblishしても機能しません。Ionic 2を使用してページをリロードするには

私はいくつかの方法で再読み込みを試みましたが、AndroidとIOSでは動作しません。私に何ができる?イオンストレージの場合

ログイン機能

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

ログイン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

あなたは 'this.storage.set( 'access_token'、token)を意味します;' doesnt set in time?どのストレージがこれですか? –

+0

これはイオンストレージです。https://ionicframework.com/docs/storage/ – nailujpeloz

答えて

1

、それは両方の設定および取得機能のための約束を返します。したがって、それらは非同期です。

だからあなたが試みることができる:

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

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

をあなたが "ページを更新" する必要がいけません。トークンを保存するとすぐに、ホームページをルートに設定することができます。

関連する問題