In meiner Angular2-Anwendung verwende ich den canActivate, um den Zugriff auf Seiten zu ermöglichen. Ein Teil davon ist, mit dem Server zu überprüfen, dass der Token nicht manipuliert wurde, also bevor ich entscheiden kann, ob einem Benutzer Zugang gewährt werden kann, muss ich meine API aufrufen. Dies bedeutet, ein Observable zu abonnieren und auf eine Antwort zu warten.Warte auf beobachtbare Abonnements Angelar2
Ich muss True oder False zurückgeben, aber da ich einen Asyns Anruf mache, kann ich nicht basierend auf meiner Antwort zurückkehren. Ich weiß, ich kann nicht warten, da es single threaded ist, aber ich muss irgendwie blockieren, bis ich eine Antwort von der API zurückbekomme. meine canActivate sieht wie folgt aus:
canActivate() {
this.guardClient.checkToken("token")
.subscribe(response => {
let responseText = response.text().replace(/"/g, '');
if (responseText === 'Ok')
{
return true;
}
if(responseText === 'denied') {
this.router.navigate(['login']); // redirecting to login
return false;
}
});
}
Kann mir jemand sagen, wie dieses Problem zu lösen ??
Danke, das ist es! :) – methgaard