在使用 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