javascript - 检查配置文件是管理员还是用户并相应显示
问题描述
我正在尝试根据用户登录的角色显示信息。如果用户是管理员,则显示数据库中的所有数据,如果其他用户则仅显示他的详细信息。
我在身份验证登录后尝试了/profile路由
//get user details of login profile
router.get('/profile', checkAuth, (req, res, data) =>{
User.find(req.userData, function(err, users) {
if (req.role === "admin") {
return res.json(users);
}else{
res.send(req.userData);
}
});
});
if
条件在这里不起作用 只有if (req.role === "admin")
在res.send(req.userData);
这里起作用。
我已经提到了角色/login
const adminEmail = "xyz@xyz.com";
const role = user[0].email===adminEmail? "admin" : "user";
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id,
phoneNo: user[0].phoneNumber,
role
}
作为回应,我得到
{
"email": "xyz@xyz.com",
"userId": "5c2dee17ea4264a40156f0",
"phoneNo": "8xxx25",
"role": "admin",
"iat": 1547111673,
"exp": 1547115273
}
解决方案
您尝试检查角色req
,但它是undefined
。首先,您必须检查用户是否已登录。然后,如果用户是管理员,则从数据库中获取一些数据。否则,发送用户的对象。
router.get('/profile', checkAuth, (req, res, data) =>{
// if req.userData is user object
if(req.userData.role === 'admin') {
User
.find()
.then(users => res.json(users))
.catch(error => res.json({error}))
} else {
res.json(req.userData);
}
});
推荐阅读
- flutter - 静音视频播放器包控制台消息
- ruby-on-rails - Rails 6.1 范围合并/加入
- reactjs - 如何用动画隐藏?反应 + SCSS
- linux - 通过ubuntu服务使用pyQT4运行python文件时无法连接到Xserver
- kernel - uBoot - 压缩数据错误 - Synology DS418J
- java - 使用 Swing 工作线程更新 Swing 组件
- sql - 多列设置空值
- python - 线程在 Python 中无法正常处理 SQL 请求
- javascript - 通过 App-Script 将 HTML 模板正文传递给 gmail 正文时遇到问题
- json - Elasticsearch 查询以获取链接到键名的多个属性的所有值