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