我正在使用Nodejs,我正在使用expressjs,现在我正在尝试使用中间件功能,但我们如何使用“next”重定向到另一个函数,这是我当前的代码
const authMiddleware = (req, res, next) => {
// Check if user is authenticated
const isAuthenticated = checkAuthentication(req);
if (isAuthenticated) {
// Now you have verified the has valid a token. So how can we redirect to another function
next();
} else {
// User is not authenticated, send an unauthorized response
res.status(401).send('Unauthorized');
}
};
1条答案
按热度按时间j2cgzkjk1#
为了使用next“重定向”到另一个函数,您可以简单地将该函数定义为另一个中间件,并让它位于中间件链中的身份验证中间件之后。下面是你如何构建它:
注意:注意不要在res.send()或res.json()之后调用next(),因为这会导致错误。在发送响应之后,通常不应调用res对象上的任何其他函数或方法。
在本例中,nextFunction将是在authMiddleware之后执行的函数。在使用app.use(...)设置中间件之后,您可以定义路由或端点。这可以确保每个请求都按照设置的顺序通过中间件。如果你在authMiddleware中调用next(),它将继续到nextFunction。
此外,如果你想确保authMiddleware只应用于某些路由,你可以通过在路由定义之前将其作为参数传递来实现,如下所示: