我试图写一个中间件,检查是否是试图检索所有用户的数据的用户是一个管理员或没有,为了测试的目的,我已经手动传递了一个数组isAuthorized功能。
userRouter.use(isAuthorized(['admin']));
userRouter
.route('/')
.get(getAllUsers);
isAuthorized函数如下所示:
module.exports.isAuthorized = function isAuthorized(roles) {
return function(req,res,next) {
try{
if(roles.include('admin')) {
next();
}
else {
res.status(401).json({
message:"User not authorized"
});
}
}
catch(error) {
return res.json({
message: error.message
});
}
}
}
我收到一个错误:roles.include不是函数
请帮帮忙!!
我试着在谷歌上搜索同样的错误,并在stackoverflow和其他网站上查找以前发布的解决方案,但没有一个有效。
3条答案
按热度按时间roejwanj1#
看起来你把数组上的方法拼错了。尝试使用
roles.includes('admin')
而不是roles.include('admin')
,它应该可以正常工作。ruarlubt2#
您尝试调用的方法的正确名称是
.includes()
。您可能需要查找documentation中的数组方法,以确保您使用了正确的方法,并查找任何不清楚的行为。8oomwypt3#
如果admin是模式的一部分,则只需检查isAdmin是否在请求体中
然后在你的路线上