Angular2限制所有路线

时间:2016-11-18 08:30:37

标签: angular

Helloo,

我创造了一名警卫:

import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate {

    constructor(private router: Router) { 
    }

    canActivate() {

        if (localStorage.getItem('currentUser')) {
            // logged in so return true
            return true;
        }

        // not logged in so redirect to login page
        this.router.navigate(['/login']);
        return false;
    }
}

并且有多个模块,里面有多个路由。如何使用这个警卫轻松限制我的应用程序中的每条路线?

祝你好运

2 个答案:

答案 0 :(得分:11)

设置一个带有警卫的空路线,然后制作该路线的其余路线children

RouterModule.forRoot([
  { path: '', canActivate: [AuthGuard], children: [...restOfYourRoutes] }])

答案 1 :(得分:6)

您可以使用无组件路线

{ path: '', canActivate: [MyGuard], children: [
   {path: 'x1', ...},
   {path: 'x2', ...},

MyGuard将应用于所有子路线。