在前端开发中,经常需要进行用户身份验证。传统的验证方式是使用 session,但是随着前后端分离的趋势,使用 token 来验证身份逐渐成为了主流。
在使用 Hapi 框架开发后端 API 的过程中,使用 JWT(JSON Web Token)来验证用户身份是比较常见的方式。本文将介绍如何在 Hapi 框架中使用 JWT 进行用户身份验证的技巧。
JWT 简介
JWT 由三部分组成,分别为 header、payload 和 signature。header 包含了加密算法等信息,payload 包含了用户信息等数据,signature 用于验证 token 真实性。
使用 JWT 进行身份验证的过程如下:
- 用户使用用户名和密码进行登录。
- 服务器验证用户信息,并生成 JWT。
- 服务器把 JWT 发送给客户端,客户端保存在本地。
- 客户端发送 API 请求时,把 JWT 发送到服务器。
- 服务器从 JWT 中解析出用户信息,并进行验证。
在 Hapi 框架中使用 JWT
在 Hapi 框架中使用 JWT 验证身份,需要安装以下两个插件:
hapi-auth-jwt2
:用于 JWT 的认证和验证。jsonwebtoken
:用于 JWT 的生成和解析。
安装方式如下:
npm install hapi-auth-jwt2 jsonwebtoken
安装完成后,在 Hapi 服务的配置中加入 JWT 认证的相关配置:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- --- - ------------------------ ----- ------- - -------------------------- ----- ------ - --- ------------- ----- ----- --- -- -- ----- -- ----- --------- - ------------- -- ---- ----- --------------------------- -- -- --- -- --------------------------- ------ - ---- ---------- --------- ------------- -------------- - ----------- --------- -- ---------- --------- -- -- ------ -------------- --- --- -- --------- ----- -------- --------------------- -------- - ----- - ---- - - -------- -- -- ---- --------------- -- ------- - ------ - -------- ----- -- - ------ - -------- ---- -- - -- -- --- ------- --------------------------- -- ---- ----- ---------------
在上面的代码中,首先定义了 token 的密钥 secretKey
,然后使用 hapi-auth-jwt2
插件注册了 JWT 认证。validateUser
函数用于验证 JWT 中保存的用户信息,并返回身份验证结果。
在用户登录时,服务器生成 JWT 并返回给客户端。生成 JWT 的代码如下:
-- -------------------- ---- ------- ------------------ ----- ---- -- - ----- - --------- -------- - - --------- -- -------- -- --------- --- ------- -- -------- --- --------- - -- -- --- ----- ----- - ---------- ----- - -------- - -- ---------- - ---------- ---- --- ---------- ----- --- - ---- - ------------------------------------- - ---
在客户端访问 API 时,需要在请求头中携带 JWT,如下所示:
const headers = { Authorization: `Bearer ${token}`, }; fetch('/api/data', { headers });
在 Hapi 框架中,JWT 的验证会默认使用 Authorization
请求头中的 Bearer 认证格式,因此可以直接在请求头中携带 JWT 进行验证。
总结
本文介绍了在 Hapi 框架中使用 JWT 验证用户身份的技巧,包括 JWT 的生成和解析、Hapi 插件的安装和配置、JWT 的验证等。通过本文的介绍,读者可以了解到如何在 Hapi 框架中使用 JWT 进行身份验证,并加强了对 JWT 技术的理解。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fd317f95b1f8cacdcc4e1e