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

(Ajax & express js) Express js authorize middleware

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

代码:

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

有人能解释一下为什么这个中间件在 ajax 请求但正常请求时无法正常工作吗?

问题是,即使您正在发送重定向,javascript 代码执行仍在继续,因为 next() 不在 [=11= 中] 条款。因此,在 res.redirect('/401') 之后放置 return 或在 else 内放置 next() 将避免此问题。