在前端开发中,身份验证是非常重要的一环。JSON Web Token(JWT)已经成为了现代 Web 应用中最流行的身份验证机制之一,它可以在不同的平台和编程语言中使用。在 Hapi 应用程序中使用 JWT 进行身份验证需要设置和实现以下步骤。
安装 JWT
首先,我们需要安装需要用到的依赖。用下面的命令来安装 JWT:
npm install jsonwebtoken
实现身份验证
生成 JWT
在生成 JWT 前,我们需要首先设置密钥,然后根据我们实际需要将需要传递的信息付给 jwt.sign()
函数,如下所示:
const jwt = require('jsonwebtoken'); const createToken = async (payload, secret) => { const token = jwt.sign(payload, secret); return token; } module.exports = createToken;
jwt.sign()
函数的第一个参数是需要传递的数据信息,这里我们传递了payload
。jwt.sign()
函数的第二个参数是密钥,用于加密和解密 JWT。
验证 JWT
要验证 JWT,我们需要以下几步:
- 为请求头添加中间件。
在 Hapi 应用程序中,我们可以使用 hapi-auth-jwt2
模块来实现这个操作。我们首先安装这个模块:
npm install hapi-auth-jwt2
然后我们在 server.js 文件中添加代码:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- --- - ------------------------ ----- ----------- - ------------------------- ----- ------------ - -------------------------- ----- -------- - ---------------------- ----- ------------ - -------------------------- ----- ---- - ----- -- -- - ----- ------ - ------------- ----- ----- ----- ----------- --- ----- ------------------------------ --------------------------- ------ - ---- ---------------- ------------- --------- -------------- - ----------- - ------- - - --- --------------------------- -------------- ------- ------ ----- ---- -------- --------- -- -- - ------ ------ -------- - --- ----- --------------- ------------------- ------- --- --------------------- -- -------
- 编写身份验证逻辑。
-- -------------------- ---- ------- ----- -------- - ----- --------- -------- -- -- - ----- ----------- - ----- ------------------------- -- ------- -- -------------- - ------ - -------- ----- -- - ------ - -------- ---- -- - -------------- - ---------
我们会将这个函数 validate()
提供给 jwt 验证中间件,并在这个函数中向数据库或者其他服务验证用户是否合法。如果用户合法,我们将 isValid
设置为 true
,反之则为 false
。
- 在路由中使用验证。
-- -------------------- ---- ------- -------------- ------- ------ ----- ---- -------- --------- -- -- - ------ ------ -------- -- ------- - ----- - --------- ------ ------ --------- ------- - - ---
我们设置了 hapi-auth-jwt2
中间件成功后,在路由配置中我们添加了 auth
对象。我们使用 strategy
将 jwt
传递给了配置对象中,并传递了 scope
,到 validate()
函数中进行逻辑检测。
总结
现在,我们已经成功地在 Hapi 应用程序中使用了 JWT 进行身份验证。JWT 的优点之一就是可以跨平台和语言使用,所以学会在 Hapi 中使用 JWT,可以让我们更好地与其他应用程序集成。整个的实现过程中,我们主要是从如下三个步骤中实现了我们的需求:
- 安装 JWT,并实现需要的函数。
- 在请求头添加中间件。
- 编写身份验证逻辑,并在路由中使用验证。
Hapi 是一个基于 Node.js 平台的面向对象的应用程序框架,具有轻量级、高效和可扩展性等特点。我们通过上述实例学到了如何在 Hapi 应用程序中使用 JWT 进行身份验证。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64702adf968c7c53b0e4ded7