node.js - 在 req.login Passport + React + Nodejs 之后等待的所有 Post/Get 请求
问题描述
在我成功验证用户并且用户登录后,对我的 API 发出的所有请求都将获得 Pending 状态。我的测试得出的结论是,这只发生在req.login运行时和之后。
req.login(user, loginErr => {
if (loginErr) {
return next(loginErr);
}
return res.send({ success : true, message : 'authentication succeeded' });
})
完整的登录护照代码
router.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) {
return next(err);
}
if (! user) {
return res.send({ success : false, message : info.message });
}
req.login(user, loginErr => {
if (loginErr) {
return next(loginErr);
}
return res.send({ success : true, message : 'authentication succeeded' });
})
})(req, res, next);
});
据我所知,一定有什么东西阻止了之后发出的所有请求。
客户端代码
let config = {
headers: {
'Content-type' : 'application/x-www-form-urlencoded'
}
}
const user = `username=${username}&password=${password}`;
await axios.post(`/auth/signup`, user, config)
.then(res => {
// USER IS LOGGED IN
if(res.data.success) {
//this.closePopup(); // POPUP gets closed.
}
})
这可能是什么原因?谢谢
解决方案
问题在于app.use(passport.session());
它需要放在路线下。
推荐阅读
- javascript - 使用 Axios 和 FormData 在线上传文件到共享点
- javascript - 断言传递给模拟函数的回调被调用
- firebase - 如何从firestore获取基于自动更新的计步器(stepcountvalue)数据
- php - 在我新安装的 laravel 8 中安装 Jetstream 和 livewire 时遇到问题
- php - Apache2 阻止 .php 文件结尾
- google-apps-script - Google 表格错误:“异常:很抱歉,发生服务器错误。请稍候,然后重试”
- python - 如何从列表中查找数据框中的子字符串以创建新列?
- scikit-image - 如何在 Frangi 过滤器中为 DICOM 数据的 3D 堆栈设置间距
- jenkins - Jenkins 管道 - sh - git push 随机失败 - 错误:脚本返回退出代码 128
- html - 如何让 CodeMirror 适合垂直弹性盒的剩余空间