概述
本支线任务展示了一个如何向 身份验证和 授权添加到 GraphQL 服务器的示例。
许多应用程序需要某种形式的用户账户和登录。通过身份验证和授权(简称“认证”),graph开发者可以限制对 GraphQLAPI 部分的访问,以便只有特定用户可以执行某些操作。
💡 注意:此支线任务仅涵盖如何在 GraphQL 服务器上实现认证。有关如何在 客户端上设置认证的更多信息,请参阅Apollo Client 认证文档。有关如何在 联合 GraphQL 架构中设置认证的更多信息,请参阅 Apollo 技术说明 或关注 Voyage II Odyssey 课程。
注意:本支线任务仅涵盖如何在 GraphQL 服务器上实现认证。
如需了解如何在 客户端上设置认证的详细信息,请参阅 Apollo 客户端有关验证的文档。
如需了解如何在 联合 GraphQL 架构中设置认证的详细信息,请参阅 GraphOS 路由器关于认证的文档或 [Voyage II Odyssey 课程(/voyage-part2)。
必备条件
在完成此支线任务之前,您应已熟悉 升空系列中的概念,包括:
- 使用 Apollo 服务创建 GraphQL 后端
- 使用 Apollo 客户端将前端应用连接到 GraphQL 服务器
- 使用 GraphOS 工作室 查询 本地运行的 GraphQL 服务器
您还应熟练使用命令行,以便在目录之间导航、运行命令和使用基本 Git 操作。
介绍 Airlock
在此支线任务中,我们将着眼于一个名为 Airlock的演示应用程序,一个可帮助您浏览和预订星际旅行计划的网站。
使用 Airlock,客人可以查找符合他们选择的日期和他们所需的床位数的房源。他们可以了解每个地方的情况和提供的设施,如果他们感兴趣,他们只需点击一下即可预订他们的住宿(当然,前提是他们的钱包里有足够的太空积分)!
房东还可以通过 Airlock 出租自己的太空套房!他们可以将自己的房源信息添加到平台中,并管理自己的预订。在每次住宿后,房客和房东可以相互留下诚实的评分和评论。
我们为什么需要授权?
Airlock 有两种用户类型:房东和房客。每种类型的用户都可以执行不同类型操作。
当以房东身份登录时,你可以:
- 创建房源信息
- 管理房源预订
- 给房客写评论
当以房客身份登录时,你可以:
- 预订住宿地点
- 给房源和房东写评论
- 管理你的太空积分
目前,房客用户不允许创建房源信息,房东用户不允许预订住宿地点。
凭借这些业务规则,我们的 Airlock GraphQLAPI 需要控制哪些用户能够看到并与图表中某些字段进行交互。这就是身份验证和授权发挥作用的地方。
- 身份验证是确定给定用户是否已登录,并随后确定某个用户是谁。(他们是他们声称的自己。)
- 授权是确定给定用户有权做什么或看什么。(他们有权做他们想要做的事情。)
在这个支线任务中,我们将了解 Airlock 如何处理身份验证和授权。我们首先来设置 Airlock 代码库。
设置 Airlock 代码库
要开始使用 Airlock,可以通过打开一个新的终端窗口并运行以下命令来下载代码库
git clone https://github.com/apollographql-education/side-quest-auth
后端服务器
Airlock 后端代码可在server
目录中找到。这包括一个GraphQL 服务器以及每个后端 REST API(可在server/services
目录中找到)各自的 Express服务器。
- 要启动 GraphQL 服务器,请打开新的终端窗口并运行以下命令:
cd servernpm installnpm start
- 要启动 Airlock 用于获取数据的后端服务,请打开新的终端窗口,并运行以下命令
cd servernpm run launch
- 一旦你启动 GraphQL 服务器和后端服务,你应该可以 查询 Airlock 后端,方法是在
https://127.0.0.1:4000
中打开 GraphOS Studio Sandbox。
前端客户端
Airlock 的前端代码可在 client
目录中找到。
- 要启动前端客户端,请打开另一个新终端窗口并运行以下命令
cd clientnpm installnpm start
- 你可以在浏览器中访问 Airlock 网站,网址为 https://127.0.0.1:3000。
练习
要点
- 认证是确定特定用户是否已登录,进而确定某人是哪位用户。
- 授权是确定特定用户被允许做什么或看到什么。
接下来
既然你已在计算机上启动并运行 Airlock,是时候深入了解身份验证了!
在下一课中,我们将研究 Airlock 如何对用户进行身份验证,并确认用户是否为其自称的身份。