2017-01-26 3 views
0

Angenommen, ich habe vier Seiten und zwei Benutzertypen. Nach dem Einloggen kann der Benutzer auf alle vier Seiten zugreifen, aber für den zweiten Benutzer beschränken wir den Zugriff auf nur zwei Seiten. Wie können wir das in Winkel 2 erreichen?Seitenzugriff basierend auf Benutzertyp in Winkel 2

+1

Blick hier: http://stackoverflow.com/documentation/angular2/1208/routing-3-0-0#t=201701261626364902546 – meorfi

Antwort

1

Sie können einen Schutz erstellen. Lassen Sie sich dieses Beispiel nehmen:

import {Injectable} from '@angular/core'; 
import {CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router'; 
import {UserService} from '../auth'; 

@Injectable() 
export class RoleGuard implements CanActivate { 
    constructor(private userService:UserService, private router:Router) { 
    } 

    canActivate(next:ActivatedRouteSnapshot, state:RouterStateSnapshot) { 
    if (this.userService.hasRole('ROLE_ADMIN')) { 
     return true; 
    } 
    this.router.navigate(['some-other-route']); 
    return false; 
    } 
} 

Dann fügen Sie es zu Ihrem Routing: nur zugänglich von einem Benutzer mit einer bestimmten Rolle (in diesem Fall

path: 'pathToAdminRoute', 
    component: SomeComponent, 
    canActivate: [RoleGuard] 

Was sie tut, ist, dass bestimmte Route machen - ein Benutzer mit einer Rolle von "ROLE_ADMIN")

0

Sie Angular2 können guards (nämlich.CanActivate, CanActivateChild, CanDeactivate & CanLoad) zum Schutz/Kontrolle des Zugriffs auf verschiedene Routen (Seiten).

Zum besseren Verständnis, lesen Sie bitte - PROTECTING ROUTES USING GUARDS IN ANGULAR