React/Redux 实战:打造一个完整的用户认证系统

阅读时长 17 分钟读完

React 是目前最流行的前端框架之一,Redux 则是 React 的状态管理工具。在本文中,我们将介绍如何使用 React 和 Redux 打造一个完整的用户认证系统。本文将详细讲解每个步骤,并提供示例代码和指导意义。

第一步:创建 React 应用

首先,我们需要使用 create-react-app 工具创建一个 React 应用。打开终端并输入以下命令:

这将创建一个名为 auth-system 的新项目。接下来,我们需要进入该项目并启动开发服务器:

现在,我们已经成功创建了一个新的 React 应用,并在本地服务器上运行。

第二步:添加 Redux

接下来,我们将为我们的应用添加 Redux。首先,我们需要安装 redux 和 react-redux:

接下来,我们需要创建一个 Redux store。在 src 目录下创建一个名为 store.js 的新文件,并添加以下代码:

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

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

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

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

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

在上面的代码中,我们创建了一个名为 initialState 的初始状态对象,以及一个 reducer 函数。这个 reducer 函数处理不同的 Redux 动作,并返回新的应用状态。我们还使用 createStore 函数创建了 Redux store,并将其导出以供应用程序使用。

接下来,我们需要将 Redux store 与我们的 React 应用程序连接起来。在 src/index.js 文件中,添加以下代码:

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

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

在上面的代码中,我们将 React 应用程序包装在 Provider 组件中,并将 Redux store 作为属性传递给它。这使得我们的应用程序中的所有组件都可以访问该 store。

现在,我们已经成功添加了 Redux,并将其连接到我们的 React 应用程序中。

第三步:添加用户认证

接下来,我们将为我们的应用程序添加用户认证。我们将使用 Firebase 作为我们的认证后端,因为它是一个流行的云服务,提供了易于使用的身份验证 API。

首先,我们需要在 Firebase 上创建一个新项目,并启用身份验证服务。接下来,我们需要将 Firebase 配置添加到我们的应用程序中。在 src 目录下创建一个名为 firebase.js 的新文件,并添加以下代码:

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

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

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

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

在上面的代码中,我们使用 Firebase SDK 初始化了 Firebase 应用程序,并将其导出以供应用程序使用。

接下来,我们需要在我们的应用程序中添加一个用户认证组件。在 src 目录下创建一个名为 Auth.js 的新文件,并添加以下代码:

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

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

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个名为 Auth 的 React 组件,并使用 useState 钩子来跟踪电子邮件和密码输入字段的值。我们还使用 Firebase 身份验证 API 提供了三个不同的处理函数,用于登录、注册和注销用户。

现在,我们已经成功添加了用户认证功能,并可以在我们的应用程序中使用它。

第四步:使用 Redux 管理认证状态

在前面的步骤中,我们已经成功添加了用户认证功能,但我们还没有将其与 Redux 集成。在本步骤中,我们将使用 Redux 管理用户认证状态。

首先,我们需要定义一些 Redux 动作。在 src 目录下创建一个名为 auth.js 的新文件,并添加以下代码:

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

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

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

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

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了三个不同的 Redux 动作:登录、注册和注销。每个动作都有三个不同的变体:请求、成功和失败。我们还定义了一些辅助函数,用于创建这些动作。

接下来,我们需要更新我们的 Redux store 和 reducer。在 src/store.js 文件中,添加以下代码:

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

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

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

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

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

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

在上面的代码中,我们更新了我们的 reducer 函数,以处理我们新定义的 Redux 动作。我们还使用 combineReducers 函数将多个 reducer 函数组合成一个根 reducer 函数。

现在,我们已经成功将用户认证状态管理到我们的 Redux store 中。

第五步:使用 Redux 中的认证状态

在前面的步骤中,我们已经成功将用户认证状态管理到我们的 Redux store 中。在本步骤中,我们将使用 Redux 中的认证状态来更新我们的用户认证组件。

首先,我们需要将 Redux 中的 auth 状态映射到我们的 Auth 组件。在 src/Auth.js 文件中,添加以下代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在上面的代码中,我们使用 connect 函数将 auth 状态映射到我们的组件。我们还将我们的处理函数包装在 Redux 动作创建器中,并将它们作为 mapDispatchToProps 参数传递给 connect 函数。

现在,我们已经成功使用 Redux 中的认证状态更新了我们的用户认证组件。

结论

在本文中,我们介绍了如何使用 React 和 Redux 打造一个完整的用户认证系统。我们从创建 React 应用程序开始,然后添加了 Redux,并使用 Firebase 添加了用户认证功能。接下来,我们使用 Redux 管理了用户认证状态,并将其与我们的用户认证组件集成。最后,我们成功使用 Redux 中的认证状态更新了我们的用户认证组件。本文提供了详细的指导意义和示例代码,希望能帮助你更好地理解 React 和 Redux,并为你的下一个项目提供有用的参考。

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

纠错
反馈