可以激活AuthGuard吗?

时间:2019-01-02 16:09:51

标签: javascript angular typescript

I'm loading a books module with the following routing configuration (src/app/index.ts)-请注意,这是一个stackblitz链接-现在可以通过在答案中实施此修复程序来起作用-打破它,可以从“图书模块”路由中删除authguard:

{
  path: 'books',
  loadChildren: './books/books.module#BooksModule',
  canActivate: [AuthGuard],
},

books模块(src/app/books/index.ts)中的路由如下所示:

export const routes: Routes = [
  { path: '', component: CollectionPageComponent },
];

由于某些原因,加载此路由会关闭AuthGuard / CanActivate保护不会触发。其中有一条日志记录语句,用于跟踪何时触发。

如果该路线已被注释掉,则这样:

export const routes: Routes = [
//{ path: '', component: CollectionPageComponent },
];

然后,守卫触发。有想法吗?

2 个答案:

答案 0 :(得分:2)

问题是authguard需要存在于您的BooksModule路由定义中。

#in books/index.ts

export const routes: Routes = [
  { path: '', component: CollectionPageComponent, canActivate: [AuthGuard] },
];

然后您可以从app / index.ts中删除canActivate

答案 1 :(得分:1)

您只能对组件使用canActivate保护。如果要在延迟加载的模块上设置防护,请使用canLoad防护。