Ich habe eine Ionic 2-Anwendung, in der ich eine Logout-Funktionalität implementieren möchte. Ich möchte den Wert eines JSON-Webtokens im lokalen Speicher auf null setzen und dann, nachdem der Wert festgelegt wurde, den Benutzer zur Anmeldeseite senden.Wartet in Ionic 2 Typoskript für lokalen Speicher versprechen zu lösen, bevor fortfahren
Ich habe ein Problem, bei dem die Anwendung nicht darauf wartet, dass der Wert der JWT festgelegt wird, bevor der Benutzer zur Anmeldeseite weitergeleitet wird. Dies ist ein Problem, da ich auf der Anmeldeseite eine Funktion habe, um den Benutzer automatisch einzuloggen, wenn sie eine gültige JWT haben. Da das Programm nicht blockiert und darauf wartet, dass der Wert im Speicher festgelegt wird, wird der Benutzer sofort nach dem Abmelden erneut angemeldet.
Wie kann ich auf den Wert des Tokens warten, bevor der Benutzer zurück auf die Anmeldeseite gesendet wird?
Abmelden Funktionalität:
logout() {
this.storage.ready().then(() => {
this.storage.set('token', '').then(data => {
this.navCtrl.setRoot(LoginPage);
});
});
CheckAuthentication Funktionalität:
checkAuthentication() {
return new Promise((resolve, reject) => {
this.storage.get('token').then((value) => {
this.token = value;
let headers = new Headers();
headers.append('Authorization', this.token);
this.http.get('apiURL', { headers: headers })
.subscribe(res => {
resolve(res);
}, (err) => {
reject(err);
});
});
});
}
IonViewWillLoad:
ionViewWillLoad(){
//Check if already authenticated
this.auth.checkAuthentication().then((res) => {
console.log("Already authorized");
this.loading.dismiss();
this.navCtrl.setRoot(HomePage);
}, (err) => {
console.log("Not already authorized");
this.loading.dismiss();
});}
Das Problem hat nichts mit dem Code zu tun, den ich hier gepostet habe. Die Logout-Funktion, die ich implementiert habe, wurde nicht ausgeführt, wenn auf die Schaltfläche zum Abmelden geklickt wurde. Dies liegt daran, dass ich die falsche typescipt Datei bearbeitet habe. Danke für den Refactoring-Vorschlag. –