在 Hapi 应用程序中使用 JWT 进行身份验证的技巧

阅读时长 6 分钟读完

在 Hapi 应用程序中使用 JWT 进行身份验证的技巧

在现代web应用中,身份验证是必不可少的组成部分。JSON Web Tokens(JWT)是用于身份验证和授权的重要工具。在Hapi平台上,它们可以通过使用hapi-auth-jwt2插件轻松集成到应用程序中。本文将介绍在Hapi应用程序中使用JWT进行身份验证的技巧和步骤。

什么是JSON Web Token(JWT)?

JSON Web Token(JWT)是一种基于JSON格式的开放标准,用于在网络应用程序和服务之间传递声明。JWT包括签名而不是加密,因此可以通过任何人读取,但只能由预期的收件人使用。JWT有三个部分:Header,Payload和Signature。

Header包含有关算法的信息,例如HS256,用于对JWT进行签名的HMAC算法。

Payload包含有关用户身份的有用信息,例如用户名。

Signature是将Header和Payload进行签名后的结果,以便验证JWT。

如何使用JWT进行身份验证?

步骤1:安装hapi-auth-jwt2插件

首先,在Hapi应用程序中使用JWT进行身份验证,您需要安装hapi-auth-jwt2插件。可以通过在终端中输入以下命令来安装该插件:

npm install hapi-auth-jwt2

步骤2:在应用程序中配置JWT策略

在安装了hapi-auth-jwt2插件之后,您需要在应用程序中配置JWT策略。要配置JWT策略,请按照以下代码示例进行操作:

const hapi = require('hapi'); const jwt = require('jsonwebtoken'); const users = require('./users'); // Fetch users data from a database or file

const plugin = { plugin: require('hapi-auth-jwt2'), options: { secret: 'abcdef123456', // Your secret key here algorithms: ['HS256'] } };

const server = hapi.server({ port: 3000, host: 'localhost' });

const init = async () => { await server.register(plugin);

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

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

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

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

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

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

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

};

init();

以下是如何配置JWT策略的解释:

首先,我们创建一个插件对象,该对象包含我们要使用的选项。在此示例中,我们定义了一个秘密键和一个算法列表。

接下来,我们创建一个hapi服务器对象并将插件对象注册到其中。

接下来,我们使用 auth.strategy() 方法在服务器上创建一个JWT策略。在此方法中,您需要定义一个“ validate ”函数,该函数负责验证JWT。在此示例中,我们使用 JWT 中的user数据与数据库或文件中的数据进行比较。这是您根据自己的身份验证机制进行处理的地方。

最后,我们创建一个路由函数,在其中调用“ request.auth.credentials ”以获取包含用户凭据的JSON对象。您可以将该对象传递给处理程序中的任何其他函数,并将其用于用户身份验证。

步骤3:创建和签署JWT

现在,我们已经在应用程序中配置了JWT策略,接下来需要创建和签署JWT,以便在应用程序中使用它进行身份验证。可以通过按照以下示例代码在代码中创建和签署JWT:

const createToken = (user) => { const { username } = user;

};

在此示例中,我们创建了一个名为“ createToken() ”的函数,它获取一个用户对象,并使用该用户的用户名创建并签署JWT。我们使用 'abcdef123456' 作为密钥,并指定JWT的过期时间为1小时。

步骤4:通过请求向应用程序发送JWT

现在,我们已经创建了JWT并在应用程序中配置了JWT策略,接下来需要将JWT通过请求发送到应用程序,以便在其中使用它进行身份验证。可以通过按照以下示例代码将JWT添加到HTTP头中的请求中来做到这一点:

fetch('http://localhost:3000/', { method: 'GET', credentials: 'include', headers: { 'Authorization': Bearer ${token} } });

在此示例中,我们使用管理员向其授予的JWT向服务器发送了GET请求。我们将JWT添加到HTTP头中的请求中,其中包括“ Authorization ”和“ Bearer ”选项,并设置应用程序的特定JWT。

结论

在本文中,我们介绍了在Hapi应用程序中使用JWT进行身份验证的技巧和步骤。我们通过解释什么是JSON Web Tokens(JWT),在应用程序中配置JWT策略,创建和签署JWT,以及将JWT通过请求发送到应用程序来详细说明了这些步骤。使用这些技巧和步骤,在您的Hapi应用程序中轻松地实现JWT身份验证!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6776adb76d66e0f9aa274450

纠错
反馈