【发布时间】:2018-01-03 03:42:38
【问题描述】:
我正在使用 express 构建 API,并且在我的路由中使用多个中间件。以下是我的端点之一
Router.route('/:id/documents')
.get([isAuthenticated, isAdmin || isUserOwn], Users.getUserDocuments);
下面是我的中间件:
export const isAdmin = (req, res, next) => {
if (req.decoded.role === 1) {
next();
} else {
res.status(401).send({
status: 'error',
message: 'Only admins are authorized to access this resource',
});
}
};
export const isUserOwn = (req, res, next) => {
if (req.decoded.userId === parseInt(req.params.id, 10)) {
next();
} else {
res.status(401).send({
status: 'error',
message: 'Only the owner can access this resource',
});
}
};
我只希望文档的所有者和管理员能够访问该文档。我现在遇到的问题是,如果用户不是管理员,它会发送 isAdmin 响应,甚至无需访问 isUserOwn 中间件。我实际上考虑过将两者都转换为一个中间件,但我也在其他路线上单独使用它们。我如何让它同时运行?
【问题讨论】:
标签: javascript express routing middleware