Fastify 是一种高效的 Node.js Web 框架,其许多特征特别适合构建高性能 Web 应用程序。对于许多 Web 应用程序来说,认证和授权是实现安全访问的必要部分。在本文中,我们将介绍在 Fastify 中构建基本认证中间件的最佳实践,同时提供示例代码和详细解释。
Fastify 插件
在 Fastify 中,通过使用插件和中间件来实现许多功能。插件可以将路由、请求钩子和其他功能自动添加到 Fastify 应用程序中。因此,在构建 Auth 中间件之前,您需要理解 Fastify 插件是如何工作的。
Fastify 插件提供了一个简单的机制来组织应用程序的功能,保持代码的整洁和易于维护。插件由以下组件组成:
- options 对象,用于指定插件的配置选项。
- register 函数,是实际编写插件的主要功能。
实现基本认证插件
基本身份验证是一种常见的用户身份验证方法,它在 HTTP 标头中包含用户的凭据,并且不加密这些凭据。该插件将检查用户提供的凭据,并根据提供的凭据控制访问。
安装依赖
在构建中间件之前,我们需要在 Fastify 应用程序中安装一些依赖项。我们将需要安装 fastify-authenticator 和 fastify-plugin 这两个 NPM 包。运行以下命令:
--- - --------------------- --------------
编写插件
现在我们已经安装了必要的依赖项,我们可以开始编写 Fastify 插件。我们首先通过导入 fastify-authenticator 包来创建一个基本身份验证插件。为了实现多用户身份验证,我们将使用基于 Json 文件的基本身份验证。
----- ---- - -------------------------------- ----- ----- - -------------------------------------- ----- -------- ------------------ ----- ----- - ----- ----- - - ----- - --------- ------- --------- ----------- ----- ------- -- ----- - --------- ------- --------- ----------- ----- ------ - - ---------------------- -------------------------- ---------- --------- -- - ----- ---- - --------------- -- ------ -- -------- --- -------------- - ------ --- -------------- ------------- - ------ ---- -- ---------------------- --------- -------- -- - ----------------------------- ----- --------- ------ -- - --- - ----- ------------------- - ----- ----- - --------------- - -- -- - ------- ------------ -- - -------------- - ------------------------ - ----- ------------ --
在上面的代码中,我们创建了一个名为 basicAuth 的插件,并传递了三个参数,fastify、opts 和 next。该插件定义了一个名为 users 的对象,其中包含两个用户 john 和 jane,以及他们的用户名、密码以及角色。基本身份验证插件注册了 fastify-authenticator,并使用其 authenticate() 方法为应用程序配置身份验证。如果提供的凭据无效,则会返回一个错误。
这个插件还为应用程序指定了一个中间件,这个中间件要求将 /protected 前缀与其它路由区别开来。这个中间件检查 JWT 令牌并执行一些其他的安全控件。
注册插件
注如果要在 Fastify 应用程序中使用您的插件,您需要使用 fastify.register() 方法调用该插件。 在您的应用程序中注册 basicAuth 插件的示例代码如下:
----- ------- - -------------------- ------- ---- -- ---------------------------------------- - ------- ------------- -- ----------------------------------------- ---------------------- ----- --------- ------ -- - ----- - --------- -------- - - ------------ ----- ---- - --------------- -- ------ -- -------- --- -------------- - ------ --------------------------- ------------- - ----- ----- - ------------------ --------- ----- --------- -- ------ - ----- - -- -------------------- ----- -- - -- ----- - ---------------------- --------------- - ------------------------ --------- -- ---------------------------------- --
在上面的代码中,我们使用 fastify-jwt 包设置了一个密钥,该密钥用于签署 JWT 令牌。 我们还注册了本文中创建的 basicAuth 插件。基本身份验证插件注册了不同的中间件,需要对此进行区分。
总结
在本文中,我们介绍了使用 Fastify 框架构建基本认证插件的最佳实践。我们学习了如何使用 fastify-authenticator 包和 fastify-plugin 包来创建和注册插件,以及如何使用 Fastify 的中间件系统来执行安全控件。作为开发人员,用 Fastify 实现基本身份验证绝对是一个很好的技能,因为这可以确保您的 Web 应用程序足够安全,以便访问是受限制的。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/653236aa7d4982a6eb48d737