如何集成 Next.js 和 Auth0

阅读时长 10 分钟读完

随着现代化 Web 应用程序的兴起,越来越多的 Web 应用程序开始采用前后端分离的架构。在这种情况下,前端通常需要集成用户认证和授权的功能。Auth0 是一个很好的选择,它提供了一个易于使用的身份验证和授权平台,可让您轻松地将身份验证和授权功能添加到您的应用程序中。Next.js 是一个轻量级的前端框架,它允许您创建可静态生成的 React 应用程序,并提供了一个功能强大的 API,可帮助您实现身份验证和授权功能。在本文中,我们将向您展示如何将 Auth0 集成到 Next.js 应用程序中。

步骤 1:创建 Auth0 应用程序

首先,您需要创建一个 Auth0 应用程序。转到 Auth0 管理仪表板,并单击“应用程序”>“创建应用程序”。

选择“单页面应用程序”,并输入一个名称以及它的 URL。然后单击“创建”。

在下一个屏幕上,您需要将 clientId 和 domain 值复制并粘贴到 Next.js 应用程序中。

步骤 2:安装 Auth0 SDK

接下来,您需要安装 Auth0 SDK。打开终端并导航到您的 Next.js 应用程序的根目录。然后运行以下命令:

步骤 3:创建 Auth0 实例

接下来,您需要创建 Auth0 实例。在您的 Next.js 应用程序的根目录中,创建一个名为“auth0.js”的新文件,并添加以下代码:

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

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

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

请注意,我们在将这些值传递给 Auth0 实例时使用了环境变量。您需要在系统中设置这些环境变量。

步骤 4:创建登录页面

接下来,我们将创建一个登录页面,让用户登录并接受他们的授权。

在您的 Next.js 应用程序中,创建一个名为“login.js”的新页面,并添加以下代码:

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

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

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

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

这将使用 Auth0 实例来授权用户。在问题解决之前,用户将被重定向到“Login”组件所呈现的页面显示的内容。

步骤 5:处理身份验证回调

当用户完成身份验证并授权后,他们将被重定向回您的应用程序。您需要捕获和处理这个回调。在您的 Next.js 应用程序中,创建一个名为“callback.js”的新页面,并添加以下代码:

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

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

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

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

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

这将允许您从 Auth0 获取其 Access Token,并将其传递给 userInfo 方法,以获取有关用户的详细信息,例如他们的姓名和电子邮件地址。

步骤 6:集成身份验证和授权

现在,您已经准备好在您的应用程序中集成身份验证和授权。在您的 Next.js 应用程序中,创建一个名为“_app.js”的新文件,并添加以下代码:

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

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

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

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

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

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

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

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

这将检查用户的身份验证状态,并从 Auth0 检索有关其详细信息的数据,例如他们的姓名和电子邮件地址。此信息将通过属性传递给所有页面。

步骤 7:保护路由

最后,您可能希望保护某些路由,仅当用户已经登录并获得授权时才能访问。在您的 Next.js 应用程序中,创建一个名为“protected.js”的新页面,并添加以下代码:

此页面使用名为“with-auth”的高阶组件来检查用户的身份验证状态。如果用户未经身份验证,则他们将被重定向到登录页面。

在您的 Next.js 应用程序中,创建一个名为“with-auth.js”的新文件,并添加以下代码:

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

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

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

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

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

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

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

这将确保用户未经身份验证就不能访问受保护的页面而被重定向。

结论

现在您已经了解了如何在 Next.js 应用程序中集成 Auth0,您可以使用它来保护您的必要数据,并确保只有经过身份验证的用户才能访问它。本教程深入介绍了集成 Auth0 并保护 Next.js 应用程序的指导意义,通过示例代码和学习深度,让您能够轻松地跟随着本文介绍的步骤进行应用,提升了前端开发相关的技术水平。

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

纠错
反馈