Node.js 面试题
目录

请解释如何使用 Passport.js 进行身份验证?

· 约 5 分钟读完 · 第 168 / 377 章

推荐答案

  1. 配置 Passport.js:

  2. 在 Express 应用中使用 Passport.js:

  3. 保护路由:

本题详细解读

1. 安装 Passport.js 和相关策略

Passport.js 本身是一个框架,它依赖于具体的策略来实现身份验证。passport-local 是一个常用的策略,用于处理用户名和密码的本地验证。

2. 配置 Passport.js

  • LocalStrategy:这是 Passport.js 提供的一个本地验证策略。你需要提供一个回调函数,该函数会接收用户名和密码,并在数据库中查找用户。如果用户存在且密码正确,则调用 done(null, user) 返回用户对象;否则返回错误信息。
  • serializeUser 和 deserializeUser:这两个方法用于在会话中存储和检索用户信息。serializeUser 将用户对象序列化为用户 ID,deserializeUser 则根据用户 ID 从数据库中检索用户对象。

3. 在 Express 应用中使用 Passport.js

  • express-session:Passport.js 依赖于会话管理,因此需要使用 express-session 中间件来管理会话。
  • passport.initialize() 和 passport.session():这两个中间件用于初始化 Passport.js 并启用会话支持。
  • passport.authenticate('local'):这个中间件用于处理登录请求。如果验证成功,用户将被重定向到成功页面;否则重定向到登录页面。

4. 保护路由

  • ensureAuthenticated:这是一个自定义的中间件函数,用于检查用户是否已经通过身份验证。如果用户未登录,则重定向到登录页面。