如何在 Hapi 框架中使用 hapi-auth-external 插件进行身份验证

前言

Hapi 是一个 Node.js 的 Web 框架,它提供了一些非常强大的功能,其中就包括身份验证。在实际的项目中,我们常常需要对用户进行身份验证,以保护用户的数据和隐私。而 hapi-auth-external 插件则是 Hapi 框架中非常常用的一个身份验证插件,它可以帮助我们快速地进行身份验证。

hapi-auth-external 插件的基本使用

hapi-auth-external 插件的基本使用非常简单,我们只需要在 Hapi 的配置中添加插件,然后在路由中添加验证规则即可。具体的代码如下:

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

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

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

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

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

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

在上面的代码中,我们首先注册了 hapi-auth-external 插件,然后添加了一个验证规则,最后在路由中指定了验证规则为 external。这样,当用户访问 /private 路由时,就会进行身份验证。

hapi-auth-external 插件的具体实现

hapi-auth-external 插件的具体实现其实非常简单,它只是在 Hapi 的 auth 策略中添加了一个 external 的策略,并且在验证时调用了我们传入的 validateFunc 函数。具体的代码如下:

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

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

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

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

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

在上面的代码中,我们首先定义了一个 external 的 scheme,并在 authenticate 函数中调用了我们传入的 validateFunc 函数。如果验证通过,我们就调用 h.authenticated 函数进行身份验证。最后,我们将 external 策略注册到了 Hapi 的 auth 策略中。

hapi-auth-external 插件的高级使用

除了基本使用外,hapi-auth-external 插件还提供了一些高级用法,例如自定义错误信息、自定义验证方式等。下面是一些示例代码:

自定义错误信息

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

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

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

在上面的代码中,我们在验证失败时抛出了一个 Boom.unauthorized('Invalid Token') 的错误,这样就可以自定义错误信息了。

自定义验证方式

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

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

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

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

在上面的代码中,我们在获取用户后,再进行自定义的验证,这样就可以自定义验证方式了。

总结

hapi-auth-external 插件是 Hapi 框架中非常常用的一个身份验证插件,它可以帮助我们快速地进行身份验证。在实际的项目中,我们可以根据自己的需求,自定义错误信息、自定义验证方式等,以满足项目的需求。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6600de6ad10417a222c036df