2017-01-26 82 views
0

假設我有四個頁面和兩個用戶類型。登錄後,用戶可以訪問所有四個頁面,但對於我們限制只能訪問2個頁面的第二個用戶。我們怎樣才能達到這個角2 ..?基於角度2中的用戶類型的頁面訪問

+1

這裏看看:http://stackoverflow.com/documentation/angular2/1208/routing-3-0-0#t=201701261626364902546 – meorfi

回答

1

您可以創建一個警衛。讓我們以這個例子:

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; 
    } 
} 

然後將其添加到您的路由:

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

它是什麼讓只具有特定角色的用戶訪問特定的路線(在這種情況下 - 一個與"ROLE_ADMIN"作用)

0

您可以使用Angular2 guardsCanActivateCanActivateChildCanDeactivate用戶CanLoad)來保護/控制對各種路線(頁面)的訪問。

爲了更好的理解,請仔細閱讀本 - PROTECTING ROUTES USING GUARDS IN ANGULAR