使用Passport本地策略登录时页面持续加载无响应求助
问题原因及解决方法
你的POST登录路由中,第一个自定义中间件仅打印了req.body,但未调用next()方法,导致请求无法传递到后续的Passport认证中间件和响应处理逻辑,浏览器因此一直处于等待响应的状态。
修复后的代码
router.get("/login", (req, res) => { res.render("users/login.ejs"); }); router.post( "/login", (req, res, next) => { // 添加next参数 console.log(req.body); next(); // 调用next传递请求到下一个中间件 }, passport.authenticate("local", { failureRedirect: "/login", failureFlash: true, }), async (req, res) => { res.send("Welcome You are logged in!"); } );
关键说明
- Express中间件函数必须接收
req、res和next三个参数,若需要让请求继续向后传递,必须显式调用next(),否则请求会被挂起,无法返回响应。 - 你之前的中间件只完成了打印操作,未放行请求,导致Passport的认证逻辑根本没有执行,自然不会有响应返回给浏览器。
内容的提问来源于stack exchange,提问作者Sparsh Maheshwari
相关产品推荐
相关产品推荐

