npm 包 express-jwt-permissions-x 使用教程

阅读时长 6 分钟读完

express-jwt-permissions-x 是一个基于 Express 框架的 JSON Web Token(JWT)权限管理模块。它允许你使用简单的 JSON 将权限分配给不同的用户角色,并在 Express 请求中进行验证。如果您正在构建一个需要进行身份验证和授权的应用程序,或为一个现有的应用程序添加身份验证和授权,这个模块就是您需要的。

安装

通过npm直接安装express-jwt-permissions-x到您的项目中:

或者在你的package.json文件中添加以下条目并运行npm install

快速上手

以下教程将通过一个简单的角色验证示例展示express-jwt-permissions-x的用法。

1.首先创建一个名为server.js的新文件,并安装以下npm模块:

  • express:用于创建Express应用程序
  • body-parser:用于解析POST请求正文中的JSON数据
  • jsonwebtoken:使用JWT进行用户身份验证

2.在server.js中添加以下代码,并使用npm start启动本地Web服务器:

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

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

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

-- --------

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

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

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

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

我们创建了一个名为/login的新路由,以接受POST请求,并比较请求主体中的用户名和密码。如果凭据正确,则使用jsonwebtoken模块生成JWT token,并将其发送回客户端。

我们还创建了一个名为/protected的保护路由。此路由使用express-jwt-permissions-x中间件,在验证身份验证之后还要验证请求中的roles属性。只有当JWT token中包含具有这些权限的角色时,才能访问此路由。

3.启动本地Web服务器:

您现在可以使用任何HTTP客户端(如Postman、cURL等)访问来测试新的保护路由。 在请求头中,您需要将生成的JWT token放在"Authorization"键中的"Bearer"模式下:

如果您没有在请求主体中使用正确的用户名和密码进行身份验证,则应该收到401响应。

配置实例

您可以使用expressJwtPermissions()中间件来配置和自定义如下属性:

  • permissionsProperty(字符串变量,默认为permissions):用于在JWT token有效负载中指定权限的属性名称。
  • permissionsExtractor(函数变量,默认为(req) => req.user.permissions):用于从JWT token有效负载中提取权限的函数。该函数应返回一个数组。
  • requestProperty(字符串变量,默认为permissions):用于将权限数组添加到Express请求对象的属性名称。
  • requestObject(布尔变量,默认false):设置为true,以便向请求对象添加整个JWT token的有效负载。
  • permissionsCheck(布尔值或函数变量,默认为true):指定权限检查是否应在middleware级别上控制。如果设置为false,则将跳过权限检查。 如果设置为true,则权限检查将使用默认的express-jwt-permissions逻辑进行。 如果传递函数,则该函数应对权限进行检查并返回一个布尔值,指示请求是否允许访问受保护的路由。

以下是一个示例,其中应用了更改默认值的配置:

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

该路由只允许拥有my_permissions属性数组中包含"admin"权限的用户访问。有关如何在JWT token有效负载中指定"my_permissions"属性的信息,请参阅相关文档。

结论

express-jwt-permissions-x是一个强大而灵活的JWT权限管理模块,可以轻松管理您应用程序中的用户角色和权限。 它提供了简单的接口和灵活的配置选项,允许您根据自己的需求和项目需要进行一些自定义设置。 希望这篇文章对您有所帮助,并使您更好地了解了如何使用该模块。

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

纠错
反馈