npm 包 passport-jwt 使用教程

阅读时长 4 分钟读完

1. 什么是 passport-jwt

passport-jwt 是一个使用 JSON Web Token(JWT)进行身份验证的 Node.js 模块,与 passport 配合使用,提供了用户身份验证和授权约定。

JWT 是一种 URL 安全的字符串,它包含了用户的身份信息和其他元数据,可以在网络中传输和存储。与传统的 Cookie 和 Session 方式不同,JWT 不需要在服务端存储会话状态,可以在客户端上持久化存储。

2. 如何安装和使用 passport-jwt

2.1 安装

2.2 加载模块和中间件

2.3 配置策略

-- -------------------- ---- -------
----- ---- - ---
------------------- - -----------------------------------------
---------------- - ------------------
-------------
  --- ----------------- ------------- ----- -- -
    -- -- ----------- -- -- ------
    ------------------ ---------------- ----- ----- -- -
      -- ----- -
        ------ --------- -------
      -
      -- ------ -
        ------ ---------- ------
      - ---- -
        ------ ---------- -------
      -
    ---
  --
--

2.4 使用策略进行身份验证

定义一个需要身份验证的路由:

当请求 /profile 路由时,会经过 passport.authenticate("jwt") 中间件,如果用户未登录或者 token 错误,会返回 401 错误,否则返回 200 状态码。

3. 示例代码

完整代码示例:

-- -------------------- ---- -------

-- -- --
--- ------- ------------

-- -- --------
----- -------- - --------------------
----- ----------- - ---------------------------------
----- ---------- - -----------------------------------

-- -- ----
----- ---- - ---
------------------- - -----------------------------------------
---------------- - ------------------
-------------
  --- ----------------- ------------- ----- -- -
    -- -- ----------- -- -- ------
    ------------------ ---------------- ----- ----- -- -
      -- ----- -
        ------ --------- -------
      -
      -- ------ -
        ------ ---------- ------
      - ---- -
        ------ ---------- -------
      -
    ---
  --
--

-- -- ----------
----- ------ - -----------------
-----------
  -----------
  ---------------------------- - -------- ----- ---
  ----- ---- -- -
    ------------- --- --------------
  -
--

4. 结论

本文介绍了如何使用 npm 包 passport-jwt 实现基于 JWT 的用户身份验证和授权,在 Node.js 应用程序中使用 Passport 策略保护路由,并提供详细的使用代码示例,可以参考实际项目中的使用。使用 Passport 作为身份验证和授权中间件,可以帮助开发者更快地构建安全可靠的 Web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/72818

纠错
反馈