我有以下中间件功能:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
console.log('***User is logged in***');
next();
} else {
res.redirect('/');
console.log('***User IS NOT logged in***');
}
}
这在以下GET路线中运行良好:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profile.ejs', {
user: req.user // get the user out of session and pass to template
});
});
但是,当我尝试将isLoggedIn函数插入POST路由时,它不会触发:
app.post('/add', isLoggedIn, function(req, res) {
console.log('Success');
});
为什么我的功能不会通过app.post触发,但是使用app.get会触发?
答案 0 :(得分:0)
如果您使用jQuery或Axios等承诺库发布到网址,那么res.redirect
将不会更改浏览器所在的网页。在这种情况下,您需要处理帖子的响应,导致状态代码为302(表达式重定向上的默认状态代码返回),然后将页面重定向到您需要的位置(在前端)