npm 包 hapi-auth-jwt2 使用教程

阅读时长 4 分钟读完

前言

在构建 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 来安装:

安装完成后,可以在你的项目中导入它:

使用

在使用 hapi-auth-jwt2 插件之前,你需要提供一些选项,让插件了解如何处理 JWT 令牌。

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

在选项中,你需要提供以下内容:

  • key:这是你的密钥,用于加密和解密 JWT 令牌。
  • validateFunc:这是一个回调函数,当 JWT 令牌被解析后会被调用。你可以在这里编写你自己的验证逻辑。
  • verifyOptions:这是一个对象,其中包含用于验证 JWT 令牌的选项。这是可选的,如果不提供任何选项,则将使用默认值。在这里,我们指定签名算法为 HS256。

接下来,在 Hapi.js 服务器上注册 hapi-auth-jwt2 插件:

完成这些步骤后,你需要创建一个路由,允许用户使用 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

纠错
反馈