【问题标题】:Angular2 CanActivate guard for all routes except oneAngular2 CanActivate 保护除一条以外的所有路线
【发布时间】:2019-09-25 14:28:30
【问题描述】:

我知道我们可以将位于一个模块中的路线分组。像这样:

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

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

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

为所有这些添加防护的正确方法是什么??

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

    您可以将无组件的空路径父路由与防护一起使用

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

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

    【讨论】:

    • 如果其他文件中的所有子路由怎么办?所有模块都有自己的路由文件。
    • 这应该仍然有效。我自己还没用过。如果不起作用,您可以尝试将守卫也添加到canActivateChild
    • 内部无组件空路径的意义何在?为什么不直接将孩子添加到外部路径?另外你为什么要使用 canActivate 而不是 canActivateChildren?
    • 内部''的重点是让它成为默认路由。无组件根路由是为了能够将canActivate: [AuthGuard]添加到仅单个路由并影响所有路由。
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多