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

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


猜你喜欢

  • npm 包 rsuite-base-components 使用教程

    简介 rsuite-base-components 是一个基于 React 框架的 UI 组件库,它提供了一系列常用的基本组件和样式,包括:表单、按钮、菜单、图标、表格等。

    3 年前
  • npm 包 wuba-design-tab-view 使用教程

    简介 wuba-design-tab-view 是一个基于 React 的 Tab 组件库,开箱即用,支持多种样式、动画效果和高度自定义调整。借助 wuba-design-tab-view,前端开发者...

    3 年前
  • npm 包 gv-imageslider 使用教程

    在前端开发过程中,经常会用到图片轮播功能。如果手写实现,会比较繁琐,也不利于代码重用。此时,我们可以考虑使用已有的 npm 包,例如 gv-imageslider。

    3 年前
  • npm 包 huekins 使用教程

    介绍 huekins 是一个用于前端自动化测试的 npm 包。它提供了一个易于使用的 API 和多种钩子函数,可以让开发者轻松地搭建测试套件。 安装 使用 npm 进行安装: --- ------- ...

    3 年前
  • npm 包 proactive-gulp-pack 使用教程

    介绍 proactive-gulp-pack 是一个前端构建工具,它基于 Gulp 和一些专门针对移动端前端开发的插件,提供了快速搭建移动端前端开发环境、打包、压缩、代码检查等功能的解决方案。

    3 年前
  • NPM 包 react-svg-placeholder 使用教程

    简介 在前端开发中,我们常常需要使用占位符来展示一些图片或者图形,以填充我们的页面和布局。如果使用一些线上网站生成图片占位符,会使得我们的开发流程变得不连贯和低效。

    3 年前
  • npm 包 redux-maybe 使用教程

    Redux 是一个非常流行的前端状态管理库,它通过在应用程序中保存和管理数据的方式来帮助开发者更好的控制复杂的应用逻辑。但是,Redux 可能有一些缺点,比如它对于处理异步操作不是很友好。

    3 年前
  • npm 包 sort-o 使用教程

    在前端开发中,排序是经常需要处理的一项任务。而在 JavaScript 中,通过使用 Array.prototype.sort() 方法可以实现对数组进行排序。然而,该方法并不足以满足所有排序需求。

    3 年前
  • npm 包 dycalendarjs 使用教程

    简介 dycalendarjs 是一个轻量、易用的日历显示 npm 包。通过该 npm 包,你可以在你的前端项目中快速搭建一个简单的日历。 安装 在 terminal 中输入以下命令: --- ---...

    3 年前
  • npm 包 wdio-webcomponents 使用教程

    在前端开发中,Web Components 的应用越来越广泛。在使用 Web Components 进行前端自动化测试时,wido-webcomponents 是一个非常实用的 npm 包。

    3 年前
  • npm 包 ocbesbn-web-init 使用教程

    前言 npm 是全球最大的开源生态系统之一,它并不仅仅是一个包管理工具,同时也是前端工程化的基石之一。在 npm 上,有数以万计的模块和工具,这些模块和工具可以帮助开发者更高效地进行开发。

    3 年前
  • npm 包 izy-sync 使用教程

    在前端开发中,我们经常需要进行异步操作,如数据请求和文件处理。而异步操作的处理需要耗费大量的精力和时间,因此如何提高异步操作的效率就成为前端开发的一项重要任务。在这方面,npm 包 izy-sync ...

    3 年前
  • npm包react-native-pinch-encoded的使用教程

    什么是npm包? npm全称为Node Package Manager,是Node.js提供的包管理工具,可以方便地发布、共享、安装和更新Node.js的包或者命令行程序等。

    3 年前
  • npm 包 backbone.firestore 使用教程

    前言 随着数据规模的增长,许多前端应用需要大规模的数据管理和同步,这就需要使用到现代化的前端框架。其中,Backbone.js 是一个不错的选择,它是一个轻量级的 JavaScript 应用程序框架,...

    3 年前
  • npm 包 homebridge-tesla1 使用教程

    介绍 在前端开发中,我们常常需要使用 npm 包来解决一些问题,方便我们的开发。而 homebridge-tesla1 是一个供开发者使用的 npm 包,用于控制 Tesla 汽车的各种参数,开发者可...

    3 年前
  • npm 包 mb-layer 使用教程

    在前端开发中,弹出层是一个非常常见的组件。而 mb-layer 这个 npm 包就是一款能够轻松编写弹出层的工具。在这篇文章中,我们将会详细介绍 mb-layer 包的使用方法,包括如何安装、如何使用...

    3 年前
  • npm 包 lucca 使用教程

    简介 lucca 是一个实用的 npm 包,提供了很方便的本地存储功能。它可以让你在前端保存和读取数据,比如保存用户设置和表单数据等。在本文中,我们将会介绍 lucca 的安装和使用,同时也会提供一些...

    3 年前
  • npm 包 rn-general-pack 使用教程

    在 React Native 的开发中,我们经常需要用到一些依赖包来增强我们的功能或者提升我们的开发效率。而 npm 是当前最流行的包管理工具之一,它提供了方便快捷的方式来搜索、安装和更新依赖包。

    3 年前
  • npm 包 css-browser-selector 使用教程

    在前端开发中,我们通常需要写一些特定浏览器的 CSS 样式,以达到特定的效果。但经常会遇到一些适用于某个浏览器而对其他浏览器无效的 CSS 代码,因此,我们需要一种能够针对不同浏览器设置不同样式的技术...

    3 年前
  • npm 包 fabric-multiline 使用教程

    简介 fabric-multiline 是一款用于处理在 canvas 上绘制多行文本的 npm 包。该包支持文本的自动换行、对齐方式等功能,适合用于前端页面的开发。

    3 年前

相关推荐

    暂无文章