在现代应用程序中,授权服务是极其重要的一环。JWT (JSON Web Tokens) 是一种非常流行的跨服务器鉴权方式。Fastify 是一种非常快速,安全和可扩展的 Node.js Web 服务器框架,本文将会介绍我们如何使用 Fastify 来开发一个基于 JWT 的授权服务。
安装和设置
Fastify是一个基于 Node.js 的库,因此首先需要确保已经安装了 Node.js 和 NPM (node package manager)。在命令行中输入以下命令进行安装:
npm install fastify fastify-jwt
Fastify-jwt 是用于 JWT 鉴权的 Fastify 插件。
创建基础代码
接下来,创建一个新文件夹并在文件夹中创建一个 server.js 文件。将以下代码复制到 server.js 文件中:
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- ----- --- - ---------------------- --------------------- - ------- ------------- -- --------------------- ----- --------- ------ -- - ----- ----- - ------------------ ---- ----- -- ------ - ----- - -- ---------------------- -------- ---------- - --------------------------------- ----- --------- ------ -- - --- - ----- ------------------- - ----- ----- - --------------- - -- -------------------------- ----- --------- ------ -- - ------ - ------ ------- - -- -- -------------------- ----- -- - -- ----- - ---------------------- --------------- - --
上面的代码使用 Fastify 和 Fastify-JWT 创建了一个授权服务端点。它向客户端提供了一个基础的 GET /login 端点,该端点生成并返回一个 JWT token。它还创建了 GET /protected 端点,该端点要求客户端提供上述生成的 JWT token 才能访问受保护的资源。
运行服务器
在命令行中运行以下命令运行服务器:
node server.js
如果一切顺利,Fastify 服务器将会开始运行并在命令行中显示一行文字:
Server listening at http://localhost:3000
进行测试
我们可以使用 Postman 进行服务器测试。首先需要在 Postman 中打开一个新的请求页面,并输入 http://localhost:3000/login 并发送请求。服务器将会返回一个类似于下面的 JSON 数据:
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.PksSkMXWFnac9QvFz0MdIIHeEa-MXdW49xhQebdKIRg" }
从返回的数据中将 JWT token 复制到剪贴板中,并粘贴到 Request Header 的 Authorization 栏中:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.PksSkMXWFnac9QvFz0MdIIHeEa-MXdW49xhQebdKIRg
执行 GET /protected 端点并发送请求。如果 JWT token 验证成功,服务器将会返回:
{ "hello": "world" }
结论
通过使用 Fastify 和 Fastify-JWT 插件,我们可以创建一个强大的跨服务器授权服务端点。JWT 鉴权方式已经被广泛接受并且通常被用于授权服务方案中。示例代码可以在实际开发中进行修改并使用在项目中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671f5b492e7021665efd31a8