gpt4 book ai didi

angular - CanLoad 守卫可以在 Electron 应用程序中使用吗?

转载 作者:行者123 更新时间:2023-12-03 12:32:41 25 4
gpt4 key购买 nike

我有来自 BE 的权限 DTO,它决定了用户可以访问的应用程序部分。
使用 NgRx 选择器我想在 CanLoad 守卫中使用它,但我无法让它工作。
路线.ts

{
path: 'acquisition',
canLoad: [AcquisitionGuard],
loadChildren: () => import('./acquisition/acquisition.module').then(m => m.AcquisitionModule),
pathMatch: 'full',
},
守卫:
canLoad(route: Route, segments: UrlSegment[]): Observable<boolean> | Promise<boolean> | boolean {
console.log('canLoad guard'); //never fires
return this.store.select(fromPermission.canAcess);
}
由于某种原因,这个守卫永远不会触发(尝试使用 console.logdebugger )。当我将其更改为 canActive并在“父”路由文件中执行它也不会触发。它触发的唯一时间是我将其更改为 canActive并将其移至“子”routes.file
收购.routes.ts
{
path: 'acquisition',
canActive: [AcquisitionGuard], //This is the only time I'll get some response from the guard
component: AcquisitionComponent,
children: [...],
},
编辑:
看起来这是由这样一个事实引起的,即一旦加载模块,'CanLoad' 守卫就不会再次被触发。是否有可能 Electron 一次加载所有内容,因此无法调用该守卫?

最佳答案

您可以在模块中将获取路径定义为子模块并添加canActivateChild它将处理此模块的所有路由的保护。

// acquisition.module.ts

const acquisitionRoutes: Routes = [
{
path: '',
canActivate: [AuthGuard],
canActivateChild: [AuthGuard],
children: [
...
]
},
];

// app.routing.ts
{
path: 'acquisition',
loadChildren: () => import('./acquisition/acquisition.module').then(m => m.AcquisitionModule),
pathMatch: 'full',
};
看看这个答案: Lazy load module with Router Guard with dynamic routes in Angular4

关于angular - CanLoad 守卫可以在 Electron 应用程序中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64440673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com