Nest.js 如何使用 Passport.js 进行身份验证?

· 约 5 分钟读完 · 第 105 / 144 章

推荐答案

在 Nest.js 中使用 Passport.js 进行身份验证的步骤如下:

  1. 安装依赖: 首先,需要安装 @nestjs/passport、passport 和 passport-local(或其他策略)包。

  2. 创建策略: 创建一个 Passport 策略类,继承自 PassportStrategy,并实现 validate 方法。

  3. 注册策略: 在模块中注册策略。

  4. 应用策略: 在控制器中使用 @UseGuards 装饰器应用策略。

本题详细解读

Passport.js 简介

Passport.js 是一个 Node.js 的身份验证中间件,支持多种身份验证策略,如本地验证、OAuth、JWT 等。Nest.js 通过 @nestjs/passport 模块与 Passport.js 集成,使得在 Nest.js 中使用 Passport.js 变得更加简单。

步骤解析

  1. 安装依赖:

    • @nestjs/passport:Nest.js 提供的 Passport.js 集成模块。
    • passport:Passport.js 核心库。
    • passport-local:本地策略,用于用户名和密码的验证。
  2. 创建策略:

    • LocalStrategy 类继承自 PassportStrategy,并指定使用 Strategy(即 passport-local 策略)。
    • validate 方法用于验证用户凭证,如果验证成功,返回用户对象;否则抛出 UnauthorizedException。
  3. 注册策略:

    • 在 AuthModule 中导入 PassportModule,并将 LocalStrategy 注册为提供者。
  4. 应用策略:

    • 在 AuthController 中使用 @UseGuards(AuthGuard('local')) 装饰器来保护路由,确保只有通过本地策略验证的用户才能访问该路由。

总结

通过以上步骤,你可以在 Nest.js 中轻松集成 Passport.js 进行身份验证。Passport.js 提供了丰富的策略支持,可以根据需求选择合适的策略来实现身份验证功能。