Hapi 框架的 JWT 验证技巧

阅读时长 4 分钟读完

在前端开发中,经常需要进行用户身份验证。传统的验证方式是使用 session,但是随着前后端分离的趋势,使用 token 来验证身份逐渐成为了主流。

在使用 Hapi 框架开发后端 API 的过程中,使用 JWT(JSON Web Token)来验证用户身份是比较常见的方式。本文将介绍如何在 Hapi 框架中使用 JWT 进行用户身份验证的技巧。

JWT 简介

JWT 由三部分组成,分别为 header、payload 和 signature。header 包含了加密算法等信息,payload 包含了用户信息等数据,signature 用于验证 token 真实性。

使用 JWT 进行身份验证的过程如下:

  1. 用户使用用户名和密码进行登录。
  2. 服务器验证用户信息,并生成 JWT。
  3. 服务器把 JWT 发送给客户端,客户端保存在本地。
  4. 客户端发送 API 请求时,把 JWT 发送到服务器。
  5. 服务器从 JWT 中解析出用户信息,并进行验证。

在 Hapi 框架中使用 JWT

在 Hapi 框架中使用 JWT 验证身份,需要安装以下两个插件:

  • hapi-auth-jwt2:用于 JWT 的认证和验证。
  • jsonwebtoken:用于 JWT 的生成和解析。

安装方式如下:

安装完成后,在 Hapi 服务的配置中加入 JWT 认证的相关配置:

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

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

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

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

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

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

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

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

在上面的代码中,首先定义了 token 的密钥 secretKey,然后使用 hapi-auth-jwt2 插件注册了 JWT 认证。validateUser 函数用于验证 JWT 中保存的用户信息,并返回身份验证结果。

在用户登录时,服务器生成 JWT 并返回给客户端。生成 JWT 的代码如下:

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

在客户端访问 API 时,需要在请求头中携带 JWT,如下所示:

在 Hapi 框架中,JWT 的验证会默认使用 Authorization 请求头中的 Bearer 认证格式,因此可以直接在请求头中携带 JWT 进行验证。

总结

本文介绍了在 Hapi 框架中使用 JWT 验证用户身份的技巧,包括 JWT 的生成和解析、Hapi 插件的安装和配置、JWT 的验证等。通过本文的介绍,读者可以了解到如何在 Hapi 框架中使用 JWT 进行身份验证,并加强了对 JWT 技术的理解。

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

纠错
反馈