我的应用程序中有一个简单的授权中间件。它在GET和POST正常请求中都能很好地工作,但是当我通过ajax发出POST请求时,它不会重定向到页面401,而是忽略中间件并继续我的模型并将数据插入到数据库中。
代码:
function(req, res, next){
if(!req.session.user){
res.status(401);
res.redirect('/401');
}
next(); }
有人可以解释一下,如果这个中间件是ajax请求但是正常请求正常工作,那么为什么这个中间件不起作用?
答案 0 :(得分:2)
问题在于即使您发送重定向, javascript 代码也会继续执行,因为next()
不在else
子句中。因此,在return
后面res.redirect('/401')
或在next()
内放else
可以避免此问题。