0

我想在路由中使用 canActivate 保护而不重复

canActivate: [AuthGuard],

如下代码

import { AuthGuard } from 'src/app/core/guards/auth.guard';
 
const routes: Routes = [{
  path: '', data: { title: 'Users' },
  children: [
    {
          path: 'createuser',
          canActivate: [AuthGuard],
          component: UserComponent,
          data: { title: 'Create User' }
        },
     {
          path: 'updateuser',
          canActivate: [AuthGuard],
          component: UpdateUserComponent,
          data: { title: 'Update User' }
        },
  ]
}];
4

2 回答 2

0

我认为您正在寻找 CanActivateChild,它可以让您为所有子路由指定警卫

import { AuthGuard } from 'src/app/core/guards/auth.guard';
 
const routes: Routes = [{
  path: '', data: { title: 'Users' }, canActivateChild: [AuthGuard]
  children: [
    {
          path: 'createuser',
          component: UserComponent,
          data: { title: 'Create User' }
        },
     {
          path: 'updateuser',
          component: UpdateUserComponent,
          data: { title: 'Update User' }
        },
  ]
}];

取自: https ://angular.io/api/router/CanActivateChild

于 2020-09-10T05:34:12.097 回答
0

在您的示例中,您可以使用canActivateChild

import { AuthGuard } from 'src/app/core/guards/auth.guard';
 
const routes: Routes = [{
  path: '', data: { title: 'Users' },
  canActivateChild: [AuthGuard],
  children: [
    {
          path: 'createuser',
          component: UserComponent,
          data: { title: 'Create User' }
        },
     {
          path: 'updateuser',
          component: UpdateUserComponent,
          data: { title: 'Update User' }
        },
  ]
}];

所以这个身份验证守卫将应用于所有孩子

于 2020-09-10T05:29:39.593 回答