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

Ser*_*aev 7 javascript typescript angular

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

canActivate: [AuthGuard],
    children: [
      {
        path: '',
        children: [
          { path: 'crises', component: ManageCrisesComponent },
          { path: 'heroes', component: ManageHeroesComponent },
          { path: '', component: AdminDashboardComponent }
        ],
      }
Run Code Online (Sandbox Code Playgroud)

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

如果他没有被授权,我希望用户不能去除除一个(登录路线)之外的任何路线.

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

Gün*_*uer 6

您可以使用带有防护的无组件空路径父路径

{ path: '', canActivate: [AuthGuard],  children: [
  {
    path: '',
    children: [
      { path: 'crises', component: ManageCrisesComponent },
      { path: 'heroes', component: ManageHeroesComponent },
      { path: '', component: AdminDashboardComponent }
    ],
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 如果其他文件中的所有子路由怎么办?所有模块都有自己的路由文件. (2认同)