前言
在构建 Web 应用程序时,安全性是很重要的一部分。Hapi.js 是一个流行的 Node.js Web 框架,它提供一些内置工具,帮助我们确保我们的应用程序足够安全。其中之一就是 hapi-auth-jwt2
插件,它是一个由 JSON Web Tokens(JWT)提供的身份验证方案。
该插件是 Hapi.js 的一个插件,它通过 JWT 令牌实现身份验证。JWT 令牌是基于 JSON 编码的令牌,可以包含有关用户的信息。JWT 令牌被广泛用于 Web 应用程序的身份验证和授权,因为它们可以很好地解决跨域资源共享(CORS)的问题。在本教程中,我们将学习如何使用 hapi-auth-jwt2
插件。
安装
首先,我们需要在项目中安装 hapi-auth-jwt2
插件。可以使用 npm 来安装:
npm install hapi-auth-jwt2
安装完成后,可以在你的项目中导入它:
const hapiJwtAuth = require('hapi-auth-jwt2');
使用
在使用 hapi-auth-jwt2
插件之前,你需要提供一些选项,让插件了解如何处理 JWT 令牌。
-- -------------------- ---- ------- ----- ------------- - - ---- -------------- -- -------- ------------- ----- --------- -------- -- -- - -- ------- -- -------------- - ----------- ---------- -- ---------- -- --
在选项中,你需要提供以下内容:
key
:这是你的密钥,用于加密和解密 JWT 令牌。validateFunc
:这是一个回调函数,当 JWT 令牌被解析后会被调用。你可以在这里编写你自己的验证逻辑。verifyOptions
:这是一个对象,其中包含用于验证 JWT 令牌的选项。这是可选的,如果不提供任何选项,则将使用默认值。在这里,我们指定签名算法为 HS256。
接下来,在 Hapi.js 服务器上注册 hapi-auth-jwt2
插件:
await server.register(hapiJwtAuth);
完成这些步骤后,你需要创建一个路由,允许用户使用 JWT 令牌进行身份验证:
-- -------------------- ---- ------- -------------- ------- ------- ----- --------- -------- ----- --------- -- -- - -- ------- -- -- --- -- ----- ----- - ----------------- -------------- - ---------- -------- --- ------ - ----- -- -- -------- - ----- ------ -- ----------- -- --- -------------- ------- ------ ----- ---- -------- ----- --------- -- -- - -- ------- ------ ------- ----------------------------------- -- -------- - ----- - --------- ----- -- -- ----------- -- ---
在 /login 路由上,我们创建一个 JWT 令牌并将其返回给用户。在这个例子中,我们使用 jsonwebtoken
包来生成 JWT 令牌。在返回的 JSON 中,我们将这个令牌包含在了一个名为 token
的属性中。在这个路由上,我们禁用了身份验证,因为用户需要登录才能获得令牌。
在 / 路由上,我们引入了起始行中使用的request.auth.credentials.name
来获取JWT已验证的用户的姓名,如果用户没有通过JWT验证则会自动返回401未授权请求错误。
现在,当用户向 / 路由发送请求时,它将执行 hapi-auth-jwt2
插件提供的身份验证。如果 JWT 令牌验证成功,则 request.auth.credentials
对象将包含有关用户的信息,可以供我们在路由处理程序中使用。
总结
在这篇文章中,我们学习了如何使用 hapi-auth-jwt2
插件来实现身份验证和授权。我们提供了关于配置、使用和编写自定义验证逻辑的详细教程。使用 JWT 令牌可以让我们更好地控制 Web 应用程序的安全性,以及处理跨域资源共享的问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/57889