(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
将会避免这个问题。