守卫 - guard
守卫是一个带有 @Injectable() 装饰器的类,它实现了 CanActivate 接口:
typescript
export class AaaGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(
ctx: ExecutionContext
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}
- 守卫是沟通客户端请求侧和执行函数侧的中间逻辑
- 当 canActivate 返回 true 时,代表逻辑通过,可以进入到执行函数
- 为 false 时,表示该次路由访问被阻止
在守卫中可以借助上下文和反射,拿到该次路由访问的元数据,用来进行逻辑的判断