Authentication
认证 是大多数应用程序中非常重要的部分. 有很多不同的方法和策略去处理 认证, 根据不同的要求决定。
本章节展示了几种不同方式,这些方式通常是能够适用于大多数情况的。
Passport 是node.js 中最流行的 用于认证处理逻辑的 库,在社区范围广为人知,并被应用于很多生产应用。 Next.js 也专门封装了 @nestjs/passport
module, 用于简单快速的整合 Nestjs 应用。 在较高的层级上来看,Passport 执行了一系列的步骤:
- 通过用户的 “credentials" (例如, 用户名/密码,JSON Web Token( JWT ), 或者由认证提供商提供的 identity token 标识token) 的校验来认证一个用户。
- 管理 已经认证的状态 (通过发布一个可移植令牌(如JWT)或创建一个Express会话)。
- 将有关身份验证的用户信息附加到请求对象,以在路由处理程序中进一步使用。
Passport 有着丰富的 策略(strategies ) 生态,这些策略实现了各种 认证 机制。 你可以根据你的需要选择各种策略, Passport 将上述的这些不同的步骤 抽象为标准的 模式(pattern),且 @nestjs/passport
的作用就是将 这个 模式(pattern) 包装并序列化成更熟悉的 Nest 的结构。
在本章节中,我们将会利用这些强大,灵活的模块,为一个 RESTful API 服务实现一个完整的 end-to-end 认证解决方案。 你可以使用本章中所描述的各种概念去实现任何 Passport 策略以实现自定义你的验证逻辑。 你可以跟着这些步骤去构建这个完整的示例,也可以在这里看到完整的示例代码 here.
Authentication requirements
在这里用例中,客户端将会发送 username 和 password, 一旦认证完成, 这个服务器将会颁发一个 JWT 用以在客户端后续的请求中,作为 bearer token in an authorization header (请求头中的 bearer token) 携带到服务端,以作为认证成功的凭证。 我们还会创建一个受保护的路由,该路由将只能够被携带 有效 JWT 的请求访问。
我们将会从验证一个用户开始,然后将会扩展实现JWT 颁发,最后我们将会创建一个受保护的路由。
首先,先安装需要的依赖包:
passport-local
: 实现了一个 username/password 验证机制,很适合我们用例的这一部分需求。
$ npm install --save @nestjs/passport passport passport-local
$ npm install --save-dev @types/passport-local
标签:Passport,JWT,auth,Authentication,文档,Nestjs,passport,import,nestjs From: https://www.cnblogs.com/jaycethanks/p/16955257.html