引言
JSON Web Token 是在客户端和服务器之间进行身份验证和授权的一种标准化协议。在现代化的 Web 应用中,身份验证和授权是必不可少的部分,因此在我们的服务器端应用中使用 JWT 是非常常见的。
在本篇文章中,我们将学习如何在 Hapi 应用中使用 JWT 进行身份验证。
参考资料
安装依赖
在开始集成 JWT 之前,我们需要安装以下依赖:
--- ------- ---- --- ------------
这将安装 Hapi、Joi 和 Jsonwebtoken 包。
创建 JWT
要创建 JWT,我们将使用 jsonwebtoken 包提供的 sign
方法。下面是一个示例:
----- --- - ------------------------ ----- ------- - - --------- --------- -- ----- ------ - ----------- ----- ----- - ----------------- ------- - ---------- ---- --- ------------------- -- ---------------------------------------------------------------------------------------------------------------------------------------
在这个例子中,我们创建了一个包含 username 属性的负载对象,然后用 'mysecret' 作为密钥签名它。expiresIn
选项告诉JWT令牌将在1天后过期。最后,我们通过控制台打印出令牌。
集成JWT
在 Hapi 应用程序中,我们将使用 hapi-auth-jwt2
插件集成 JWT。
首先,我们需要在我们的项目中安装该插件:
--- ------- --------------
接下来,在我们的 server.js
中引入所需的组件:
----- ---- - ---------------- ----- --- - --------------- ----- --- - ------------------------ ----- ------------ - -------------------------- ----- ------ - ------------- ----- ----- ----- ------------ ---
接下来,我们注册插件:
----- -------- - ----- --------- -------- -- - ------ - -------- ---- -- -- ----- ------ - - ----- --------------------- --------- ----- -------- -------- -------- - --- - ------------------------------ --------------------------- ------ - ---- ----------- --------- -------------- - ----------- --------- -- --- --------------------------- - ----- ------- - ------------------ -------- ----- ----------- --- ------- ----------- - -- -- ----- ------------------------
在这里,我们定义了 validate
方法,它将被用于验证令牌。我们使用 hapi-auth-jwt2
插件注册了 JWT 验证方案和默认策略。接下来,我们使用 server.auth.default()
方法为所有路由设置默认的授权策略。
现在我们已经在 Hapi 应用程序中成功集成了 JWT 验证。
实现身份验证
让我们通过一个简单的示例来理解如何使用 JWT 进行身份验证。
我们将创建一个简单的 API、它包含一个受保护的路由,它只能在用户提供有效 JWT 时访问。
下面是示例代码:
-------------- ------- ------ ----- ----------------- -------- - ----- ------ -------- ----- -------- --------- -- - ------ ----- -- - --------- ------- -- -- ---
在这个例子中,我们定义了一个 GET 请求的路由 /api/protected
。我们通过将 auth
选项设置为 jwt
来保护它。这标志着该路由需要一个有效的 JWT 令牌才能访问。
接下来,我们需要在客户端发出请求时正确设置 JWT。
下面是一个创建 JWT 并在请求中发送它的例子:
----- ------- - - --------- --------- -- ----- ------ - ----------- ----- ----- - ----------------- ------- - ---------- ---- --- -------------------------------------------- - ------- ------ -------- - -------------- ------- ---------- -- -- ---------------- -- ---------------- -------------- -- - -------------------- -- -------------- -- - ----------------------- ------- ---
在这个例子中,我们使用之前创建的 JWT 将它添加到请求头中作为 Bearer 令牌。
结论
现在,我们已经成功为 Hapi 应用程序集成了 JWT 验证。JWT 提供了一种安全而简单的方式对用户进行身份验证和授权。我们可以使用 hapi-auth-jwt2
插件轻松集成 JWT 使用。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67122327ad1e889fe202f781