Hapi 框架中如何实现 401 授权错误响应

阅读时长 8 分钟读完

在 Web 应用程序中,授权是非常重要的一个环节,它决定了哪些用户可以访问哪些资源。在 Hapi 框架中,我们可以很容易地实现授权机制,同时也可以处理授权错误响应。

本文将介绍如何在 Hapi 框架中实现 401 授权错误响应,包括以下内容:

  1. 什么是 401 授权错误响应
  2. 如何在 Hapi 框架中实现 401 授权错误响应
  3. 示例代码

什么是 401 授权错误响应

HTTP 状态码是 Web 应用程序中非常重要的一部分,它们表示了服务器对客户端请求的响应。其中,401 状态码表示客户端未经授权访问受保护的资源。

在 Web 应用程序中,我们通常需要对一些资源进行访问控制,只有经过授权的用户才能访问。如果客户端未经授权访问了这些资源,服务器就会返回 401 状态码,告诉客户端它没有权限访问这些资源。

如何在 Hapi 框架中实现 401 授权错误响应

在 Hapi 框架中,我们可以使用 hapi-auth-jwt2 插件来实现 JWT(JSON Web Token)授权机制。这个插件可以验证 JWT 并将用户信息存储在 request.auth.credentials 中,从而实现授权。

当客户端未经授权访问受保护的资源时,我们可以使用 hapi-boom-decorators 插件来返回 401 授权错误响应。这个插件可以将错误信息包装成 Boom 对象,并设置响应的状态码和错误信息。

下面是实现 401 授权错误响应的步骤:

1. 安装 hapi-auth-jwt2hapi-boom-decorators 插件

2. 注册 hapi-auth-jwt2 插件

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

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

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

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

            ------ - -------- ---- --
        -
    ---
---
展开代码

3. 注册 hapi-boom-decorators 插件

4. 在路由上启用 JWT 策略

-- -------------------- ---- -------
--------------
    ------- ------
    ----- -------------
    ------- -
        ----- -
            --------- ------
            ------ --------- -- ---- ----- ---------
        --
        -------- --------- -- -- -
            ------ ------- ------------
        -
    -
---
展开代码

5. 返回 401 授权错误响应

当客户端未经授权访问受保护的资源时,我们可以使用 request.boom.unauthorized() 方法返回 401 授权错误响应。

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

            ------ ------- ------------
        -
    -
---
展开代码

示例代码

完整的示例代码如下:

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

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

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

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

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

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

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

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

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

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

-------
展开代码

以上就是在 Hapi 框架中实现 401 授权错误响应的详细步骤和示例代码。希望本文能够对大家有所帮助,让大家更好地掌握 Hapi 框架的授权机制。

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

纠错
反馈

纠错反馈