如何使用 GraphQL 添加带有 Node.js 的 Authing 身份验证

阅读时长 6 分钟读完

在现代 Web 应用程序中,身份验证是一个非常重要的方面。Authing 是一个身份认证解决方案,它提供了一个易于使用的身份验证 API,可以轻松地集成到您的应用程序中。本文将介绍如何在 Node.js 应用程序中使用 GraphQL 和 Authing 身份验证。

准备工作

在开始之前,您需要完成以下准备工作:

  • 安装 Node.js 环境
  • 创建一个 Authing 账户
  • 创建一个应用程序并获取应用程序的 App ID 和 App Secret

安装依赖

在开始之前,您需要安装以下依赖:

创建 GraphQL Server

我们将使用 graphql-yoga 创建一个 GraphQL 服务器。在项目根目录下创建一个 index.js 文件,然后添加以下代码:

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

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

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

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

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

现在,您可以运行 node index.js 命令启动服务器并访问 http://localhost:4000。您应该能够看到 "Hello World!"。

集成 Authing 身份验证

现在我们将集成 Authing 身份验证。首先,让我们安装 authing-js-sdk。在项目根目录下运行以下命令:

然后,打开 index.js 文件并添加以下代码:

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

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

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

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

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

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

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

在上面的代码中,我们首先创建了一个 AuthenticationClient 实例,并将 appIdappSecret 传递给它。然后,我们定义了一个 User 类型,它包含用户的 ID、用户名、电子邮件和访问令牌。我们还定义了一个 me 查询,它返回当前登录用户的信息。在 me 查询的解析器函数中,我们首先检查用户是否已经登录。如果用户未登录,则抛出一个错误。如果用户已经登录,则返回用户信息。最后,我们定义了一个 accessToken 字段,它返回用户的访问令牌。

GraphQLServer 的构造函数中,我们定义了一个 context 函数。这个函数将从请求头中获取访问令牌,并使用 authing.checkLoginStatus 方法检查用户是否已经登录。如果用户已经登录,则将用户信息添加到上下文中。在 me 查询的解析器函数中,我们可以从上下文中获取用户信息。

现在,您可以运行 node index.js 命令启动服务器。在浏览器中打开 http://localhost:4000,您应该能够看到 GraphQL Playground。在 GraphQL Playground 中,您可以运行以下查询:

如果您尚未登录,则会收到以下响应:

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

如果您已经登录,则会收到类似以下响应:

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

结论

在本文中,我们介绍了如何在 Node.js 应用程序中使用 GraphQL 和 Authing 身份验证。我们首先创建了一个 GraphQL 服务器,然后集成了 Authing 身份验证。最后,我们编写了一个查询,用于获取当前登录用户的信息。通过使用 GraphQL 和 Authing 身份验证,您可以轻松地构建安全可靠的应用程序。

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

纠错
反馈