npm 包 express-jwt-temp 使用教程

在 Node.js 的 Web 开发中,经常需要使用 JWT (Json Web Token) 鉴权。而 express-jwt-temp 是一个基于 Express 的 JWT 中间件,用于验证用户的授权信息以及生成 JWT。在本文中,我们将使用 express-jwt-temp,来学习如何实现 JWT 鉴权。

安装

首先,在创建新的项目或是已有项目中安装 express-jwt-temp:

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

当 express-jwt-temp 安装完成后,我们就可以在应用中引入 express-jwt-temp:

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

expressJwt 代表了 express-jwt-temp 中间件对象。

使用

在将 expressJwt 中间件添加到 Express 应用中之前,我们需要先了解 JWT 的基本概念。

JWT 分为三部分:Header,Payload 和 Signature。其中 Header 和 Payload 都是由 JSON 对象组成的。Signature 是由 Header 和 Payload 拼接后进行签名得到的。Header 和 Payload 分别包含 JWT 的元数据和用户携带的信息。

我们需要在服务端生成 JWT,发送给客户端,客户端将 JWT 放入 Header 中,通过请求头的形式发送到服务端,服务端解析 Header 信息并验证权限。

在了解 JWT 的基本概念后,我们就可以看一下如何在应用中使用 express-jwt-temp 实现 JWT 鉴权。

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

在上述代码中,我们使用 app.use() 添加 expressJwt 中间件到应用中。此时,所有未登录的请求都将被拒绝。

实现 JWT 鉴权,需要提供以下参数:

secret

一个用于生成 JWT 签名的字符串或 buffer,此值用于服务端签署所有的 JWT。secret 仅在服务端存储,不应该被任何其他的客户端访问到。

getToken

一个函数,传入 HTTP 请求的 req 对象作为参数。该函数应该返回一个 JWT 字符串,通常在 HTTP 请求头中(如 Authorization),或在查询参数中。

在本例中,我们将 JWT 放入了 HTTP 请求头的 Authorization 字段中,返回值即 Authorization 字段中的 JWT。

algorithms

声明 JWT 使用哪种算法进行签名,例如:HS256。

unless

一个数组或字符串,定义哪些请求不需要 JWT 鉴权检查。在本例中,我们排除了 / 和 /login 两个路由,即不需要 JWT 鉴权检查的路由。

示例

我们可以用以下代码,快速建立一个简单的鉴权应用程序:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

代码中,我们创建了一个简单的用户认证系统。在登陆成功后,我们生成了一个 JWT 并为其设置了 ID 和用户名。

在创建 Express 应用程序对象之后,我们使用 app.use() 方法添加 expressJwt 中间件。在这个示例里,只有路由 / 和 /login 例外,即这两个路由不需要进行 JWT 鉴权检查。

最后,在 users 变量数组中定义了一些用户的数据,GET /products 路由将返回一个简单产品列表,对于其他路由,基于 JWT 鉴权的中间件将确保用户可以访问它们。

恭喜,您现在已经学会了如何使用 npm 包 express-jwt-temp。通过这篇文章,您现在已经了解了如何安装和使用 express-jwt-temp 包,以及使用 JWT 对 Express 应用进行鉴权的基本原理。让我们开始为您的项目添加 JWT 鉴权吧!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60058a0781e8991b448ed370


猜你喜欢

  • NPM包——json-lorem使用教程

    在前端开发中,经常需要用到一些假数据作为测试和开发之用,这时候 json-lorem 这款 npm 包就显得尤为重要。它可以帮助我们快速生成各种各样的 JSON 格式的假数据。

    3 年前
  • npm 包 generator-ts-node-aws 使用教程

    在前端领域,使用 npm 包来管理项目依赖已经非常普遍了。而对于 TypeScript 开发者来说,generator-ts-node-aws 这个 npm 包可以帮助我们更快捷地搭建 TypeScr...

    3 年前
  • npm 包 vue-sharemodel 使用教程

    在前端开发中,我们经常需要在组件之间共享数据。而 Vue.js 作为一款 MVVM 前端框架,通过响应式数据绑定机制,提供了数据共享的最佳实践。然而,在大型应用中,组件之间的数据通信可能变得非常复杂。

    3 年前
  • npm 包 @darovic/ckeditor-cdb 使用教程

    简介 @darovic/ckeditor-cdb 是一个基于 CKEditor 的插件,用于与 CDB(Content Database) 数据库进行交互。它可以帮助前端开发人员快速构建基于 CDB ...

    3 年前
  • npm 包 @darovic/ckeditor-cdb-theme 使用教程

    介绍 @darovic/ckeditor-cdb-theme 是一个基于 CKEditor 4 的中文主题,用于美化 CKEditor 编辑器界面,使其更加符合中文用户的使用习惯和审美观。

    3 年前
  • npm 包 criticide-cli 使用教程

    npm 是 Node.js 的包管理工具,提供了大量优秀的 Node.js 包。本文将介绍一款名为 criticide-cli 的 npm 包,该包是一个文件修改工具,用于自动修改指定目录下的代码中由...

    3 年前
  • npm包 eventx-resizeobserver-event 使用教程

    Introduction 在前端开发中,我们常常会需要对某个元素的大小变化做出相应的处理。这个过程需要使用 ResizeObserver API 来监听元素大小的变化。

    3 年前
  • npm 包 req-control 使用教程

    随着前端技术的不断发展,前端的工具也在不断更新和完善。在前端开发中,我们经常需要向服务器发送 HTTP 请求获取数据,这时有许多成熟的工具来帮助我们完成请求的发送。

    3 年前
  • npm 包 vue-summernote-lite 使用教程

    介绍 vue-summernote-lite 是一个基于 Vue.js 的富文本编辑器组件,具有轻量、易用、强大等优点,支持插入图片、链接、表格等功能。 安装 vue-summernote-lite ...

    3 年前
  • npm 包 pipo-scripts 使用教程

    前言 在前端开发中,我们经常需要进行构建,打包,测试等操作,npm 包 pipo-scripts 可以帮助我们提高生产力,提供了一些项目的标准流程,极大地减少了配置时间和精力,本文将详细介绍如何使用 ...

    3 年前
  • npm 包 @calebmer/extract-text-webpack-plugin 使用教程

    前言 在前端开发中,我们经常需要对网站的样式进行优化或者压缩,同时为了方便调试和维护代码,我们以模块化的方式进行开发。Webpack 是一个常用的前端打包工具,它可以将多个模块打包成一个或多个 JS ...

    3 年前
  • npm 包 kofi-route 使用教程

    在前端开发中,路由是一个重要的概念,它可以让我们通过 URL 访问不同的页面,并且可以在页面之间传递参数。而 kofi-route 是一个轻量级的路由管理工具,可以让我们更方便地管理路由。

    3 年前
  • npm 包 p3x-stackicons 使用教程

    简介 p3x-stackicons 是一个基于 Stackicons 的 npm 包,它提供了一组矢量图标,包括了很多常见的前端技术和工具图标。使用这些图标可以让你的网站或应用更加美观和易于识别。

    3 年前
  • npm 包 react-native-bouncy-drawer 使用教程

    前言 在开发 React Native 项目时,我们经常需要使用一些第三方组件或库来实现复杂的功能。其中,一个常用的组件就是 bouncy drawer。 bouncy drawer 是一个可以实现 ...

    3 年前
  • npm 包 @coocss/cli 使用教程

    如果你正在寻找一种能帮助你快速构建 Web 应用程序的工具,并且希望可以完全掌控你的工程和资源,那么 @coocss/cli 将是你的不二选择。 概述 @coocss/cli 是一个全新的脚手架工具,...

    3 年前
  • npm包brigrid使用教程

    在前端开发中,布局一直是一个非常重要的部分。为方便布局的操作,我们可以使用npm包brigrid。本文将介绍brigrid的使用方法,包括安装、初始化、使用和配置。

    3 年前
  • npm 包 ng2-org-chart 使用教程

    ng2-org-chart 是一个基于 Angular 2+ 开发的组织结构图组件,它可以帮助你快速创建出简单易用的组织结构图,并且支持多种定制化的样式。 本篇文章将介绍如何使用 ng2-org-ch...

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

    介绍 redux-firebase-middleware 是一款帮助前端开发者在 React 应用中更方便地使用 Firebase 数据库的库,它本身是一个 Redux 中间件,提供了在应用中处理 F...

    3 年前
  • npm 包 react-native-sf-result 使用教程

    React Native 是一种基于 JavaScript 和 React 框架的开发平台,它可以让开发者使用一套代码来同时构建 iOS 和 Android 应用程序。

    3 年前
  • npm包tmallbot使用教程

    npm(Node Package Manager)是 JavaScript 世界的包管理工具,是开发中必不可少的一部分。在前端开发中,我们可以通过 npm 获取大量的开源工具,减少重复的代码编写,而 ...

    3 年前

相关推荐

    暂无文章