使用 Fastify 开发基于 JWT 的授权服务

在现代应用程序中,授权服务是极其重要的一环。JWT (JSON Web Tokens) 是一种非常流行的跨服务器鉴权方式。Fastify 是一种非常快速,安全和可扩展的 Node.js Web 服务器框架,本文将会介绍我们如何使用 Fastify 来开发一个基于 JWT 的授权服务。

安装和设置

Fastify是一个基于 Node.js 的库,因此首先需要确保已经安装了 Node.js 和 NPM (node package manager)。在命令行中输入以下命令进行安装:

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

Fastify-jwt 是用于 JWT 鉴权的 Fastify 插件。

创建基础代码

接下来,创建一个新文件夹并在文件夹中创建一个 server.js 文件。将以下代码复制到 server.js 文件中:

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

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

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

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

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

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

上面的代码使用 Fastify 和 Fastify-JWT 创建了一个授权服务端点。它向客户端提供了一个基础的 GET /login 端点,该端点生成并返回一个 JWT token。它还创建了 GET /protected 端点,该端点要求客户端提供上述生成的 JWT token 才能访问受保护的资源。

运行服务器

在命令行中运行以下命令运行服务器:

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

如果一切顺利,Fastify 服务器将会开始运行并在命令行中显示一行文字:

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

进行测试

我们可以使用 Postman 进行服务器测试。首先需要在 Postman 中打开一个新的请求页面,并输入 http://localhost:3000/login 并发送请求。服务器将会返回一个类似于下面的 JSON 数据:

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

从返回的数据中将 JWT token 复制到剪贴板中,并粘贴到 Request Header 的 Authorization 栏中:

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

执行 GET /protected 端点并发送请求。如果 JWT token 验证成功,服务器将会返回:

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

结论

通过使用 Fastify 和 Fastify-JWT 插件,我们可以创建一个强大的跨服务器授权服务端点。JWT 鉴权方式已经被广泛接受并且通常被用于授权服务方案中。示例代码可以在实际开发中进行修改并使用在项目中。

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