Angular2 CanActivate保护除一个以外的所有路线

时间:2016-11-29 18:23:23

标签: javascript angular typescript

我知道我们可以对位于一个模块中的路线进行分组。像那样:

canActivate: [AuthGuard],
    children: [
      {
        path: '',
        children: [
          { path: 'crises', component: ManageCrisesComponent },
          { path: 'heroes', component: ManageHeroesComponent },
          { path: '', component: AdminDashboardComponent }
        ],
      }

但我应该将保护添加到每个模块的路由文件中。而且我有很多。

我希望用户在未经授权的情况下不能进入除一条路线(登录路线)以外的任何路线。

为所有人添加警卫的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您可以使用带有警卫的无组件空路径父路径

{ path: '', canActivate: [AuthGuard],  children: [
  {
    path: '',
    children: [
      { path: 'crises', component: ManageCrisesComponent },
      { path: 'heroes', component: ManageHeroesComponent },
      { path: '', component: AdminDashboardComponent }
    ],
  }
}

并在警卫中检查用户是否已登录。 如果未登录且当前路由为login,则仍然允许它。