在现代 Web 应用程序中,身份验证是一个非常重要的方面。Authing 是一个身份认证解决方案,它提供了一个易于使用的身份验证 API,可以轻松地集成到您的应用程序中。本文将介绍如何在 Node.js 应用程序中使用 GraphQL 和 Authing 身份验证。
准备工作
在开始之前,您需要完成以下准备工作:
- 安装 Node.js 环境
- 创建一个 Authing 账户
- 创建一个应用程序并获取应用程序的 App ID 和 App Secret
安装依赖
在开始之前,您需要安装以下依赖:
npm install graphql graphql-yoga authing-js-sdk
创建 GraphQL Server
我们将使用 graphql-yoga
创建一个 GraphQL 服务器。在项目根目录下创建一个 index.js
文件,然后添加以下代码:
-- -------------------- ---- ------- ----- - ------------- - - ------------------------ ----- -------- - - ---- ----- - ------ ------- - -- ----- --------- - - ------ - ------ -- -- ------ ------- - -- ----- ------ - --- --------------- --------- --------- --- --------------- -- ------------------- -- ------- -- -------------------------
现在,您可以运行 node index.js
命令启动服务器并访问 http://localhost:4000
。您应该能够看到 "Hello World!"。
集成 Authing 身份验证
现在我们将集成 Authing 身份验证。首先,让我们安装 authing-js-sdk
。在项目根目录下运行以下命令:
npm install authing-js-sdk
然后,打开 index.js
文件并添加以下代码:
-- -------------------- ---- ------- ----- - ------------- - - ------------------------ ----- - -------------------- - - -------------------------- ----- ------- - --- ---------------------- ------ -------------- ---------- ----------------- --- ----- -------- - - ---- ----- - ------ ------- --- ---- - ---- ---- - --- --- --------- ------- ------ ------- ------------ ------- - -- ----- --------- - - ------ - ------ -- -- ------ -------- --- ----- -------- ----- -------- -- - ----- - ---- - - -------- -- ------- - ----- --- ---------- ---------------- - ------ ----- - -- ----- - ------------ -------- -- ------------ - -- ----- ------ - --- --------------- --------- ---------- -------- ----- -- ------- -- -- - ----- ----- - ----------------------------- -- --- ----- - ---- - - ----- -------------------------------- ------ - ---- -- - --- --------------- -- ------------------- -- ------- -- -------------------------
在上面的代码中,我们首先创建了一个 AuthenticationClient
实例,并将 appId
和 appSecret
传递给它。然后,我们定义了一个 User
类型,它包含用户的 ID、用户名、电子邮件和访问令牌。我们还定义了一个 me
查询,它返回当前登录用户的信息。在 me
查询的解析器函数中,我们首先检查用户是否已经登录。如果用户未登录,则抛出一个错误。如果用户已经登录,则返回用户信息。最后,我们定义了一个 accessToken
字段,它返回用户的访问令牌。
在 GraphQLServer
的构造函数中,我们定义了一个 context
函数。这个函数将从请求头中获取访问令牌,并使用 authing.checkLoginStatus
方法检查用户是否已经登录。如果用户已经登录,则将用户信息添加到上下文中。在 me
查询的解析器函数中,我们可以从上下文中获取用户信息。
现在,您可以运行 node index.js
命令启动服务器。在浏览器中打开 http://localhost:4000
,您应该能够看到 GraphQL Playground。在 GraphQL Playground 中,您可以运行以下查询:
query { me { id username email accessToken } }
如果您尚未登录,则会收到以下响应:
-- -------------------- ---- ------- - ------- - ----- ---- -- --------- - - ---------- ---- --------------- ------------ - - ------- -- --------- - - -- ------- - ---- - - - -
如果您已经登录,则会收到类似以下响应:
-- -------------------- ---- ------- - ------- - ----- - ----- ---------- ----------- ----------- -------- -------- -------------- -------------- - - -
结论
在本文中,我们介绍了如何在 Node.js 应用程序中使用 GraphQL 和 Authing 身份验证。我们首先创建了一个 GraphQL 服务器,然后集成了 Authing 身份验证。最后,我们编写了一个查询,用于获取当前登录用户的信息。通过使用 GraphQL 和 Authing 身份验证,您可以轻松地构建安全可靠的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6769488e98e3e1ab1a8e9097