获取 Hapi.js 中的 API 正在处理的请求的 IP 地址

阅读时长 3 分钟读完

在使用 Hapi.js 开发 Web 应用程序时,有时需要获取正在处理的请求的 IP 地址。例如,根据请求者的 IP 地址限制访问特定的 API 端点。

在 Hapi.js 中获取请求者的 IP 地址是很容易的,本篇文章将介绍如何在 Hapi.js 中获取 IP 地址以及如何使用它进行请求控制的基本用法。

获取 IP 地址

在 Hapi.js 中,我们可以通过 request.connection.info.remoteAddress 属性获取正在处理的请求的 IP 地址。下面是一个例子:

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

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

在此示例中,我们定义一个路由(/api/test),并在路由的处理程序中获取请求者的 IP 地址。请求者的 IP 地址包含在 request.connection.info.remoteAddress 属性中,并存储在名为 ip 的变量中。最后,我们将 IP 地址包含在响应中返回。

请求控制

获取请求者的 IP 地址后,我们可以使用它来进行请求控制。例如,我们可以使用 Hapi.js 的 route prerequisites 功能(通过 before 属性)来检查请求者的 IP 地址是否被允许访问特定的 API 端点。下面是一个例子:

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

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

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

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

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

在此示例中,我们定义一个路由(/api/restricted),并使用 Hapi.js 的 route prerequisites 功能来检查请求者的 IP 地址是否包含在 allowedIps 数组中。如果 IP 地址没有包含在数组中,则抛出 boom.unauthorized 错误。否则,请求将继续到路由的处理程序中。

总结

在 Hapi.js 中获取正在处理的请求的 IP 地址很容易,只需使用 request.connection.info.remoteAddress 属性。通过获取 IP 地址,我们可以使用它进行请求控制,例如限制访问特定的 API 端点。在此示例中,我们使用 Hapi.js 的 route prerequisites 功能来实现这一目标。

希望这篇文章能够帮助您更好地理解如何在 Hapi.js 中获取正在处理的请求的 IP 地址以及如何使用它进行请求控制。

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

纠错
反馈