守卫是一个使用@injectable装饰器的类,守卫应该实现canactivate接口
接收单个参数,executionContext 实例,exectuion继承子argumentsHost,argumenthost是传递给原始处理程序的参数的包装器,
守卫有一个单独的作用,他们根据运行时出现的某些条件,如:权限、角色、访问控制列表来确定给的请求是否由路由处理程序处理。这通常称为授权。
绑定守卫:
通过@UseGuards装饰器绑定
守卫使用的范围
控制器守卫:
方法守卫
全局守卫
根模块的依赖注入的方式,将守卫作为根模块的提供者注入到整个程序
守卫实战:
1、通过setMetadata设置当前这个路由的元数据,也就是在服务器端设置好当前路由的可访问权限。
2、通过canActivate方法的 context参数获取当前路由的上下文,也就是请求和响应
通过获取当前路由的元数据和请求的参数进行对比。判断当前请求是否可以访问当前路由
通过返回值的true和false来进行判断