Fastify 中如何实现 JWT 的鉴权

阅读时长 5 分钟读完

JWT(JSON Web Token)是一种无状态的、可扩展的身份验证机制,广泛应用于前后端分离的应用程序中。Fastify 作为一款快速的 Node.js Web 框架,提供了简单易用的插件机制,实现 JWT 鉴权也非常简单。

准备工作

在开始实现 JWT 鉴权前,需要先安装 fastify-jwtjsonwebtoken 插件:

生成 JWT

在权限验证成功时,需要生成 JWT。首先在 fastify 实例中注册插件:

在路由处理函数中生成 JWT:

上述代码中,fastify.jwt.sign 方法用于生成 JWT,参数为需要包含在 JWT 中的信息,包括用户名、角色等。

鉴权

在路由处理函数前执行鉴权,判断请求中是否包含有效的 JWT:

上述代码中,fastify.authenticate 是一个 middleware,用于验证请求是否包含有效的 JWT。如果验证成功,request.user 中包含 JWT 中的信息。

实现鉴权的核心代码如下:

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

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

上述代码中,在 Fastify 实例中定义了 authenticate 方法,将其添加到路由处理函数的 preHandler 中,实现对路由的鉴权认证。

示例代码

完整的示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

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

总结

通过 Fastify 插件机制实现 JWT 鉴权非常简单,只需使用 fastify-jwt 插件即可。在路由处理函数前添加 middleware 实现对请求的鉴权认证。同时,需要注意保护好自定义的 secret,避免泄露给未授权的人员。

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

纠错
反馈