Passport.js 在 Express 项目中的身份认证集成流程是什么?请说明其核心机制和关键步骤。
考察说明
考察对 Express 与 Passport.js 集成机制及认证流程的理解。
回答思路
- 【回答框架 1】Passport.js 是 Node.js 的认证中间件,核心是策略机制,将不同认证方式(如本地用户名密码、OAuth)封装为策略,通过中间件集成到 Express。
- 【回答框架 2】集成步骤:安装 passport 和所需策略;初始化 passport(app.use(passport.initialize()));配置策略(定义验证逻辑,调用 done 回调返回用户或错误);若使用会话则加 passport.session() 并实现序列化与反序列化用户。
- 【回答框架 3】认证流程:请求到达受保护路由前,passport.authenticate('local') 触发策略验证,成功后调用 done(null, user),然后序列化用户到会话;后续请求通过 deserializeUser 恢复用户。
- 【回答框架 4】注意保护路由时可用中间件检查 req.isAuthenticated() 或自定义中间件。
- 【关键点 1】Passport 依赖策略模式,认证逻辑与路由解耦。
- 【关键点 2】必须初始化 passport 和配置策略,会话支持需序列化与反序列化。
- 【关键点 3】authenticate 中间件触发认证,成功后进入下一中间件。