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包@axa-ch/node-sass-import-once 使用教程

    前言 在前端开发中,经常需要使用sass进行样式开发,而node-sass是sass编译工具中的一种,非常常用。但是在开发过程中,经常会遇到样式中引入了多个sass文件,导致编译速度变慢的问题。

    3 年前
  • npm 包 @axa-ch/stylelint-config-axa-base 使用教程

    前言 在前端开发中,一般情况下我们都需要进行代码风格检查和格式化,目的是为了避免在多人协作时因为格式不统一导致代码可读性变差,从而提高代码质量。而为了方便维护,我们通常会把这些规则集成到代码编辑器或者...

    3 年前
  • npm 包 @axa-ch/stylelint-config-axa-bem 使用教程

    在前端开发中,编写高质量的样式代码是非常重要的。为了保证代码质量,我们可以使用 stylelint 工具来自动化检查样式代码。本文将介绍 @axa-ch/stylelint-config-axa-be...

    3 年前
  • NPM 包 @axa-ch/stylelint-config-axa-scss 使用教程

    前言 在 Web 前端开发中,CSS 是一个非常重要的部分。CSS 代码通常占到前端代码的相当一部分,而且对页面的样式和性能都有着重要的影响。因此,为了保证 CSS 代码的可维护性、可读性和可扩展性,...

    3 年前
  • npm 包 @cleerio/cleerio-icons 使用教程

    简介 @cleerio/cleerio-icons 是一个基于 SVG 的图标库。该库包含多个常见的图标,支持自适应大小和颜色,且易于使用和定制。 安装 在项目中安装该包可以使用 npm 或 yarn...

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

    简介 eventx-core 是一个轻量级的事件库,可用于前端和 Node.js 等 JavaScript 环境。它提供了一个简单但功能强大的 API 来处理事件及其相关的行为。

    3 年前
  • npm 包 duallist-box-empretec 使用教程

    介绍 duallist-box-empretec 是一个帮助开发者快速实现双向选择器的 npm 包。双向选择器通常用于选择某一元素或者一组元素来进行处理,比如回收站中的文件,或者多选框。

    3 年前
  • npm 包 postbem 使用教程

    如果你是一个前端工程师,想要写出可维护性强的 CSS 代码,那么你应该了解 postbem 这个 npm 包。本文将详细介绍如何使用 postbem 并深入探讨 postbem 的学习指导意义。

    3 年前
  • npm 包 kt-outlook 使用教程

    在前端开发中,我们经常需要在 Web 应用程序中使用邮件功能。为了简化邮件处理过程,现在有许多 NPM 包和库可以使用。其中,kt-outlook 包提供了一系列方法,用于发送和处理 Outlook ...

    3 年前
  • npm 包 bitcoin-converter 使用教程

    简介 bitcoin-converter 是一个 npm 包,用于将比特币和各种货币之间进行转换。在前端开发中,使用 bitcoin-converter 可以方便地将比特币转换为常见的货币,或者将常见...

    3 年前
  • npm 包 pug-start 使用教程

    什么是 pug-start? pug-start 是一个超级简单易用的 HTML 模板引擎,它使用了 pug(以前称为 Jade),是一个高效、灵活和流行的模板引擎。

    3 年前
  • npm 包 json-rpc2-implementer 使用教程

    在构建前端应用程序时,需要调用后端 API 接口进行数据交互。与后端 API 的交互方式有多种,其中之一就是使用 JSON-RPC 协议。json-rpc2-implementer 是一款 npm 包...

    3 年前
  • npm 包 pohlig-hellman 使用教程

    npm 包 pohlig-hellman 使用教程 Pohlig-Hellman 是一个用于离散对数问题求解的算法。而在密码学中,离散对数问题有着非常广泛的应用。在前端领域中,我们也常常需要使用离散对...

    3 年前
  • npm 包 quoteshell 使用教程

    在前端开发中,我们经常需要在命令行中执行一些 shell 命令。然而,由于命令行中的参数与字符转义等问题,有时会导致命令无法正确执行,这时候 quoteshell 这个 npm 包就能派上用场了。

    3 年前
  • npm 包 weex-store 使用教程

    简介 npm 包 weex-store 是一个适用于 Weex 的状态管理库,支持全局状态管理和局部状态管理,提供了诸如按需更新、数据持久化、中间件等高级特性。 安装 在你的项目根目录下执行以下命令即...

    3 年前
  • npm 包 `apollo-link-rxjs` 使用教程

    简介 apollo-link-rxjs 是一个 GraphQL 客户端库 Apollo 官方推出的 npm 包,它可以集成 RxJS(Reactive Extensions for JavaScrip...

    3 年前
  • npm 包 egg-aliyun-auth-helper 使用教程

    简介 在现代浏览器中,跨域访问受到了很大的限制。为了解决这个问题,我们通常会使用一些方式来实现跨域访问,例如:代理、JSONP等。但是这些方式通常存在一些缺陷,例如:代理需要自己开发、JSONP只支持...

    3 年前
  • npm 包 @qogni/hapi-sequelize 使用教程

    前言 Node.js 是一个使用 JavaScript 编写的服务器端运行环境,它使用事件驱动、非阻塞 I/O 模型为开发人员提供了高效率的异步编程接口,而 SQL 作为更稳定和成熟的数据存储方式,也...

    3 年前
  • npm 包 gobike 使用教程

    随着共享单车的兴起,对于共享单车数据的处理变得越来越重要。gobike 是一个方便的 npm 包,它提供了对共享单车数据的处理能力。本文将详细介绍 gobike 的使用方法,并提供示例代码帮助读者理解...

    3 年前
  • npm 包 ringtone-wp 使用教程

    在前端开发过程中,使用音效成为了一种非常流行的方式,而使用 npm 包管理器可以方便快捷地使用这些音效。这里我们将介绍一个可以在网页上播放铃声的 npm 包:ringtone-wp,并详细讲解如何使用...

    3 年前

相关推荐

    暂无文章