- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
canLoad
和 canActivate
有什么区别?
export interface Route {
path?: string;
pathMatch?: string;
matcher?: UrlMatcher;
component?: Type<any>;
redirectTo?: string;
outlet?: string;
canActivate?: any[];
canActivateChild?: any[];
canDeactivate?: any[];
canLoad?: any[];
data?: Data;
resolve?: ResolveData;
children?: Routes;
loadChildren?: LoadChildren;
}
我什么时候应该选择其中的哪一个?
最佳答案
canActivate 用于防止未经授权的用户访问某些路由。 See docs了解更多信息。
canLoad 用于防止应用程序在用户未被授权的情况下延迟加载整个模块。
See docs和下面的示例以获取更多信息。
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AuthGuard]
},
使用此代码,仅当 AuthGuard 返回 true
时,AdminModule 的代码才会加载到应用程序中。
如果用户未被授权访问此路由,并且我们只使用了 canActivate
守卫,则将加载 AdminModule
,即使用户不会能够访问该路由。
关于angular - Angular 的 canLoad 和 canActivate 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026045/
文档说我不能同时使用这两个功能 https://angular.io/docs/ts/latest/guide/router.html#!#canload-blocks-preload 如果用户被授权
我遇到了一种奇怪的行为(或者可能是一种被通缉的行为)。我有一个 Angular 应用程序,其中所有模块都是延迟加载的。 在一个模块上,我有一个守卫检查来自 JWT 的解码用户是否是系统管理员。如果是这
This question有这个例子: { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule',
我有来自 BE 的权限 DTO,它决定了用户可以访问的应用程序部分。 使用 NgRx 选择器我想在 CanLoad 守卫中使用它,但我无法让它工作。 路线.ts { path: 'acquisit
我已经创建了一个 AuthGuard 服务并为其实现了 CanLoad 接口(interface),如下所示 import { Injectable } from '@angular/core'; i
如果我使用延迟加载并为“CanLoad”定义了一个保护。是否需要“CanActivate”?就像一个模块可能被有效加载但是用户做了一些使“CanLoad”无效的事情但是因为它被加载了用户可以通过Can
我不知道这是否是一个好习惯。但以下是我想要做的: 我有2个懒加载模块:ManagementModule和ConfigurationModule,路由配置如下: const routes: Routes
我有一个 Angular 2.0.1(最终版)应用,它使用 HashLocationStrategy 作为路线导航策略。 我定义了一条路线如下: { path: 'shiftmanag
canLoad 和 canActivate 有什么区别? export interface Route { path?: string; pathMatch?: string; match
我已经为延迟加载的状态添加了一个canLoad 守卫。我遇到的问题是,如果使用 router.navigate() 从不同的状态初始化状态,我无法获得任何路由参数。 所以这是我的路线配置: path:
我是一名优秀的程序员,十分优秀!