(Ajax&express js)Express js授权中间件

我有一个简单的授权中间件在我的应用程序。 它在GET和POST正常请求中都能正常工作,但是当我通过ajax发出一个POST请求时,它不会redirect到页面401,而是忽略中间件并继续到我的模型并将数据插入到数据库中。

码:

function(req, res, next){ if(!req.session.user){ res.status(401); res.redirect('/401'); } next(); } 

有人可以解释为什么这个中间件不工作,如果这是一个Ajax请求,但正常的请求正常工作?

问题是,即使你发送一个redirect, JavaScript代码的执行仍然继续,因为next()不在else子句中。 因此,在res.redirect('/401')之后放置一个return或者将next()放在一个else将会避免这个问题。