【发布时间】:2020-10-22 12:51:39
【问题描述】:
我正在尝试如下实现用户身份验证:
userRouter.post("/login", passport.authenticate("local", { session: false }), (req, res) => {
if (req.isAuthenticated()) {
const { _id, username } = req.user;
const token = signToken(_id);
res.cookie("access_token", token, { httpOnly: true, sameSite: true });
res.status(200).json({ isAuthenticated: true, user: { username } });
}
});
但为了能够添加一些自定义消息,我使用以下替代方法:
userRouter.post('/login', (req, res, next) => {
passport.authenticate('local',{ session: false }, (err, user, info) => {
if (req.isAuthenticated()) {
const { _id, username } = req.user;
const token = signToken(_id);
res.cookie("access_token", token, { httpOnly: true, sameSite: true });
res.status(200).json({ isAuthenticated: true, user: { username } });
}
if (err) return next(err)
if (info)
res.status(400).json({ message: { msgBody: info.message, msgError: true } });
})(req, res, next);
});
但是,在第二种选择中,req.isAuthenticated() 似乎从未被评估为真。
谁能帮我理解为什么?
谢谢
【问题讨论】:
标签: javascript node.js reactjs express passport.js