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

推荐答案

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

  1. 安装依赖: 首先,需要安装 @nestjs/passportpassportpassport-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 提供了丰富的策略支持,可以根据需求选择合适的策略来实现身份验证功能。

纠错
反馈