使用 Express.js + Passport.js 实现用户认证

阅读时长 6 分钟读完

在 Web 应用程序中,用户认证是一个必不可少的功能。它可以帮助我们保护用户的隐私和数据安全。Express.js 是一个流行的 Node.js Web 框架,而 Passport.js 是一个流行的身份验证中间件。在本文中,我们将学习如何使用 Express.js 和 Passport.js 实现用户认证。

安装和配置

首先,我们需要安装 Express.js 和 Passport.js。可以使用 npm 命令来安装它们:

我们还需要安装一些其他的依赖项,例如 body-parser 和 cookie-parser。在安装完依赖项后,我们需要配置 Express.js 和 Passport.js。

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

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

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

在上面的代码中,我们配置了 Express.js 和 Passport.js。我们使用了本地策略(LocalStrategy)来验证用户。我们还设置了一个秘密(secret),它是用来加密用户认证信息的。

用户认证

接下来,我们需要编写代码来实现用户认证。我们将创建一个用户模型(User)和一个用户控制器(UserController)。

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个用户数组(users),它包含了两个用户:admin 和 user。我们使用本地策略来验证用户。当用户登录时,我们使用 authenticate 方法来验证用户。如果验证通过,我们使用 logIn 方法来将用户信息存储在会话中。当用户注销时,我们使用 logout 方法来清除会话中的用户信息。

页面保护

现在,我们已经实现了用户认证,但是我们还需要保护一些页面,使得只有已经认证的用户才能访问它们。我们可以使用 isAuthenticated 方法来检查用户是否已经认证。

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

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

在上面的代码中,我们定义了一个 HomeController,它包含了一个 index 方法。在 index 方法中,我们使用 isAuthenticated 方法来检查用户是否已经认证。如果用户已经认证,我们将渲染 index 视图。如果用户没有认证,我们将重定向到登录页面。

结论

在本文中,我们学习了如何使用 Express.js 和 Passport.js 实现用户认证。我们通过使用本地策略来验证用户,并保护了一些页面,使得只有已经认证的用户才能访问它们。这对于任何需要用户认证的 Web 应用程序来说都是非常重要的。

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

纠错
反馈