在 Web 应用程序中,用户认证是一个必不可少的功能。它可以帮助我们保护用户的隐私和数据安全。Express.js 是一个流行的 Node.js Web 框架,而 Passport.js 是一个流行的身份验证中间件。在本文中,我们将学习如何使用 Express.js 和 Passport.js 实现用户认证。
安装和配置
首先,我们需要安装 Express.js 和 Passport.js。可以使用 npm 命令来安装它们:
npm install express passport passport-local express-session
我们还需要安装一些其他的依赖项,例如 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