问题描述
我正在配置服务器端,并且试图限制用户访问GET请求将默认情况下设置为false的_id和admin字段。原因是我想避免用户通过PUT请求将其管理员角色更改为TRUE,然后获得管理员权限。 GET请求是为了在前端显示其详细信息。我正在使用的数据库是MongoDB。这是我的代码:
Route.js
router.route('/my-profile')
.get(authenticate.verifyUser,(req,res,next) => {
User.findOne({ _id: req.user._id })
.populate('properties')
.then((user) => {
res.statusCode = 200
res.setHeader('Content-Type','application/json')
res.json(user)
},(err) => next(err))
.catch((err) => next(err))
})
.post(authenticate.verifyUser,next) => {
res.statusCode = 403
res.end('POST operation not supported on /my-profile')
})
.put(authenticate.verifyUser,next) => {
User.findByIdAndUpdate(req.user._id,{
$set: req.body
},{ new: true })// the new will return the updated in the reply
.then((user) => {
res.statusCode = 200
res.setHeader('Content-Type',(err) => next(err))
.catch((err) => next(err))
})
.delete(authenticate.verifyUser,next) => {
User.findByIdAndRemove(req.user._id)
.then((resp) => {
res.statusCode = 200
res.setHeader('Content-Type','application/json')
res.json(resp) // send response back to the client
},(err) => next(err))
.catch((err) => next(err))
})
这是迄今为止在邮递员中显示的内容:
{
"admin": false,"_id": "5f9ee6c33beb0101e858af32","username": "paul","title": "mr","email": "arko@gmail.com","firstName": "Mauri","lastName": "Polin","address": "23 rorer","postcode": "se2 ofe","country": "United Kingdom","phoneNumber": "2","gender": "male","lookingFor": "rent","joinDate": "2020-10-30T00:00:00.000Z","createdAt": "2020-11-01T16:48:03.910Z","updatedAt": "2020-11-01T17:38:52.736Z","__v": 0
}
任何人都可以提供帮助吗?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)