前言
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