在 Web 应用程序中,用户认证是非常重要的。Passport 是一个 Node.js 的认证中间件,它可以帮助我们实现多种认证策略。Passport-Local 是 Passport 的一个策略,它允许我们使用用户名和密码进行认证。在这篇文章中,我们将学习如何使用 Passport-Local 验证用户名和密码登录。
安装 Passport 和 Passport-Local
首先,我们需要安装 Passport 和 Passport-Local。使用以下命令在项目中安装它们:
--- ------- -------- --------------
配置 Passport
在使用 Passport-Local 进行认证之前,我们需要配置 Passport。我们需要在 Express 应用程序中初始化 Passport 并设置 Passport 的序列化和反序列化函数。序列化和反序列化函数是用于在用户登录和注销时将用户对象存储和检索到会话中的函数。
----- -------- - -------------------- ----- ------------- - ----------------------------------- -- --- -------- ------------------------------- ---------------------------- -- ---------- ----------------------------- ----- -- - ---------- --------- --- ----------------------------- ----- -- - ----------------- ----- ----- -- - --------- ------ --- ---
配置 Passport-Local 策略
现在,我们需要配置 Passport-Local 策略,以便在用户登录时使用它。我们需要创建一个新的 LocalStrategy 实例,并将其作为参数传递给 Passport 的 use 方法。LocalStrategy 的构造函数接受一个验证函数,这个函数将接收用户名和密码作为参数,并返回一个用户对象或 false。
----- ---- - ------------------------- -- -- -------------- -- ---------------- ------------------------ --------- ----- -- - -------------- --------- -------- -- ----- ----- -- - -- ----- - ------ ---------- - -- ------- - ------ ---------- ------ - -------- -------- --- - -- ------------------------------- - ------ ---------- ------ - -------- ------ --- - ------ ---------- ------ --- ----
在上面的代码中,我们使用 User 模型从数据库中查找用户。如果用户不存在或密码不正确,则返回 false。否则,返回用户对象。
编写登录路由
现在,我们已经配置了 Passport 和 Passport-Local,我们可以编写登录路由了。在这个路由中,我们需要调用 Passport 的 authenticate 方法,并将 LocalStrategy 的名称作为参数传递给它。我们还需要指定登录成功和失败时的回调函数。在登录成功时,我们将用户对象存储到会话中。在登录失败时,我们将显示一个错误消息。
------------------ ------------------------------ - ---------------- ---- ---------------- --------- ------------- ---- ----
在上面的代码中,我们使用了 Express 的 post 方法来处理登录请求。我们将 Passport 的 authenticate 方法作为中间件使用。successRedirect 和 failureRedirect 选项用于指定登录成功和失败时将用户重定向到的 URL。failureFlash 选项用于启用 Passport 的 flash 消息,以便在登录失败时显示错误消息。
编写模板
最后,我们需要编写登录表单的模板。在模板中,我们需要使用表单元素来收集用户名和密码,并使用 submit 按钮提交表单。
----- --------------- -------------- ----- ------ --------------------------- ------ ----------- --------------- -------------- ------ ----- ------ -------------------------- ------ --------------- --------------- -------------- ------ ------- ------------------------- -------
示例代码
下面是完整的示例代码:
----- ------- - ------------------- ----- -------- - -------------------- ----- ------------- - ----------------------------------- ----- ----- - ------------------------- ----- ---- - ------------------------- ----- --- - ---------- -- --- ------- ---- ---------------------------- --------- ----- ---- ---------------------------------- ----------------- -- --- -------- ------------------------------- ---------------------------- -- ---------- ----------------------------- ----- -- - ---------- --------- --- ----------------------------- ----- -- - ----------------- ----- ----- -- - --------- ------ --- --- -- -- -------------- -- ---------------- ------------------------ --------- ----- -- - -------------- --------- -------- -- ----- ----- -- - -- ----- - ------ ---------- - -- ------- - ------ ---------- ------ - -------- -------- --- - -- ------------------------------- - ------ ---------- ------ - -------- ------ --- - ------ ---------- ------ --- ---- -- ------ ------------------ ------------------------------ - ---------------- ---- ---------------- --------- ------------- ---- ---- -- ---- ----------------- ----- ---- -- - ----- -------- - ------------------- ------------------- - -------- --- --- -- ----- ---------------- -- -- - ---------------------- ---
总结
在本文中,我们学习了如何使用 Passport-Local 验证用户名和密码登录。我们首先安装了 Passport 和 Passport-Local,然后配置了 Passport,并创建了一个新的 LocalStrategy 实例。接下来,我们编写了登录路由和登录表单的模板。最后,我们看到了完整的示例代码。通过学习本文,我们可以了解如何使用 Passport-Local 实现基本的用户认证,并在 Web 应用程序中应用它。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6588d60deb4cecbf2ddf8b07