2017-06-16 2 views
0

J'ai la définition d'itinéraire suivante.Angular 2/4: Comment restreindre l'accès à Login Route si l'utilisateur est déjà connecté?

export const Routes = RouterModule.forChild([ 
    { 
     path: 'login', 
     component: LoginComponent 
    }, 
    { 
     path: 'protected', 
     canActivate: [AuthGuardService], 
     component: ProtectedComponent 
    }, 
    { 
     path: 'home', 
     component: HomeComponent, 
     canActivate: [AuthGuardService], 
    }, 
]); 

je mettre en œuvre avec succès AuthGuardService qui restreignent l'accès à une route protégée si l'utilisateur n'est pas connecté.

Ce que je suis en train de réaliser est, si l'utilisateur est déjà connecté et accéder à la Connexion Route, Je veux qu'il redirige vers un autre itinéraire comme page d'accueil.

+0

Ajouter un ' HomePageGuard' qui appelle 'router.navigate' s'il y a un utilisateur connecté. – cgTag

Répondre

4

Si j'étais vous, j'implémenterais probablement un autre GuardService qui fonctionnerait exactement de manière opposée à votre AuthGuardService - seulement permettre à l'utilisateur si f.e. il n'y a pas de jeton de session dans le stockage local. Et puis l'utiliser pour sécuriser le composant de connexion.

export const Routes = RouterModule.forChild([ 
    { 
     path: 'login', 
     canActivate: [AnonymousGuardService], 
     component: LoginComponent 
    }, 
    { 
     path: 'protected', 
     canActivate: [AuthGuardService], 
     component: ProtectedComponent 
    }, 
    { 
     path: 'home', 
     component: HomeComponent, 
     canActivate: [AuthGuardService], 
    }, 
]); 
-2

Vous pouvez également appeler après avoir soumis le formulaire de connexion

router.navigateByUrl ('/ HomePage')

par exemple:

onSubmit() { 

    const user = new User(this.myForm.value.email, this.myForm.value.password); 
    this.authService.signin(user) 
     .subscribe(
      data => { 
       this.router.navigateByUrl('/HomePage'); 
      } 
     ); 
} 
+0

Cela ne fonctionnera que si l'utilisateur essayez de soumettre leurs informations d'identification une fois de plus. Ce qui était prévu était d'empêcher les utilisateurs d'accéder au composant de connexion une fois qu'ils sont connectés. –