在面向用户的应用程序中,API 的安全性和可扩展性是至关重要的。Fastify 是一个高性能、低开销、快速且灵活的 Node.js Web 框架,而 JWT 则是一个简单的安全标准,可用于在客户端和服务器之间传输身份验证信息。
本文将教你如何使用 Fastify 和 JWT 构建面向用户的 API,帮助你了解如何对用户进行身份验证,并保护你的 API 免受未经授权的访问。
安装 Fastify
首先,我们需要安装 Fastify。可以使用 npm 来安装 Fastify:
npm install fastify
在安装完成后,我们可以开始创建我们的 API 了。
创建 API
创建 Fastify 实例并为其添加路由和处理程序:
const fastify = require('fastify'); const app = fastify(); app.get('/', (req, res) => { res.send({ message: 'Hello World!' }); });
路由保护
接下来,我们将为路由添加保护措施,以确保只有经过身份验证的用户才能访问敏感信息。我们将使用 JSON Web 令牌(JWT)来完成这一点。
安装并配置 JWT
为了使用 JWT,我们需要安装相应的 npm 包:
npm install jsonwebtoken
然后,我们可以配置 JSON Web 令牌以使用它进行身份验证。
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ---------- - ------------------ ---------------------------- ----- ---- ----- -- - ----- ---------- - -------------------------- -- ------------ -- ------------------------------ --- - ------ -------- -------------- ------------- ---------- - ----- ----- - ------------------------ ----------------- ----------- ----- -------- -- - -- ----- - ------ -------- -------------- --------- - -------- - -------- ------- --- ---
这将为 Fastify 应用程序添加一个 authenticate 路由装饰器。这个装饰器检查是否存在有效的 JWT,如果不存在,则向客户端发送 401 未授权状态码。
路由保护的应用
现在,我们可以应用 authenticate 装饰器来保护需要身份验证的路由:
app.get('/protected', { preValidation: [app.authenticate] }, (req, res) => { res.send({ message: 'You are authorized' }); });
JWT 的生成
我们需要一个方法来生成令牌。这个令牌就可以用来验证用户。在我们的示例中,我们使用一个简单的路由来生成 JWT:
-- -------------------- ---- ------- ------------------ ----- ---- -- - ----- - --------- -------- - - --------- -- --------- --- ------ -- -------- --- ----------- - ---------------- ------ ---------- -------- -------- ------------ --- - ----- ----- - ---------- -------- -- ------------ ---------- ----- --- ---
完整代码
下面是一个完整的示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ------------------------ ----- --- - ---------- ----- ---------- - ------------------ ---------------------------- ----- ---- ----- -- - ----- ---------- - -------------------------- -- ------------ -- ------------------------------ --- - ------ -------- -------------- ------------- ---------- - ----- ----- - ------------------------ ----------------- ----------- ----- -------- -- - -- ----- - ------ -------- -------------- --------- - -------- - -------- ------- --- --- ------------------ ----- ---- -- - ----- - --------- -------- - - --------- -- --------- --- ------ -- -------- --- ----------- - ---------------- ------ ---------- -------- -------- ------------ --- - ----- ----- - ---------- -------- -- ------------ ---------- ----- --- --- ------------ ----- ---- -- - ---------- -------- ------ ------- --- --- --------------------- - -------------- ------------------ -- ----- ---- -- - ---------- -------- ---- --- ----------- --- --- ---------------- ----- -- - -- ----- - ------------------- ---------------- - ------------------- ------- -- ---- ------- ---
结论
在本文中,我们学习了如何使用 Fastify 和 JWT 构建面向用户的 API。我们掌握了如何进行身份验证,以确保只有经过身份验证的用户才能访问敏感信息。此外,我们还在本文中使用了 JWT 的简明易懂的示例代码。
使用 JWT 和 Fastify 构建 API 提高了程序的安全性和可扩展性,有助于提高我们面向用户的应用程序的可靠性和性能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f7bd76c5c563ced5a87a86