限制用户通过GET请求访问管理员和_id详细信息

问题描述

我正在配置服务器端,并且试图限制用户访问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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...