Je travaille sur une application web utilisant Angular et j'ai rencontré un problème. Il y a un service d'authentification qui permet de se connecter à un utilisateur. J'envoie une requête à au serveur avec les informations d'identification et j'attends une réponse. Le problème est que je J'essaie de naviguer du composant de connexion au composant d'accueil. de la réponse
login(formValues) {
this.auth.logInUser(formValues.username, formValues.password)
.subscribe(response =>{
if(!response){
this.invalidLogin=true;
} else {
this.router.navigate(['stream']);
}
})
}
Mais tous les autres composants ont un canActivateGuard qui vérifie si l'utilisateur actuel est connecté (les données que j'attends du serveur).
export const appRoutes: Routes = [
{path: 'login', resolve: LiveStreamResolver, component: LoginComponent},
{path: 'reports', component: ReportsComponent, resolve: LiveStreamResolver, canActivate: [AuthGuardService]},
{path: 'calendar', component: CalendarComponent, resolve: LiveStreamResolver, canActivate: [AuthGuardService]},
{path: 'stream', component: LiveStreamComponent},
{path: '', redirectTo: 'login', pathMatch: 'full'}
];
constructor(public auth: AuthenticationService) { }
canActivate(): boolean {
return !!this.auth.currUser;
}
Existe-t-il un moyen de résoudre le problème avant que la vérification de la fonction canActivate ne soit effectuée ? Existe-t-il d'autres solutions ?
Tout autre conseil sur la façon de protéger les composants serait le bienvenu :D
0 votes
Veuillez vérifier la réponse mise à jour :)