前言,小编最近在学习NestJS系列相关知识,想把自己了解到的知识点作为笔记的同时也分享给大家,本篇涉及的是与守卫相关的知识,如果有哪里写的不好的话还恳请各位掘友批评指正谢谢,小编将不胜感激,闲话不多说,我们直接步入正题吧...
-
[系列阅读 ]
-
[ 源代码地址] - GitHub仓库地址
守卫(Guard)
在 NestJS 中,守卫(Guards)是一种用于处理身份验证和授权的机制。它们是一种特殊的类,实现了 CanActivate 接口,主要用于确定请求是否应该由路由处理程序处理。守卫在每个中间件之后执行,但在任何拦截器或管道之前执行。
以下是关于 NestJS 守卫的关键点:
-
主要功能:
- 身份验证:确定用户是否已登录或有效(即登录信息是否过期)。
- 授权:检查用户是否有权限执行特定操作。
-
工作原理:
- 守卫可以访问 ExecutionContext 实例,因此可以了解当前请求的详细信息。
- 它们返回一个布尔值,指示是否允许当前请求继续。
-
使用场景:
- 保护路由或控制器
- 实现基于角色的访问控制
- 验证 JWT 令牌
- 检查用户权限
创建守卫
// 1. 使用 nest -h 查看命令
nest -h
// 2. 生成一个完整的资源。资源通常包括控制器、服务、模块等相关文件。
nest g res guard //guard为资源名称
// 3. 创建一个守卫,名称为guard
nest g gu guard