提问人:arkanoid 提问时间:11/2/2020 更新时间:11/2/2020 访问量:307
限制用户通过 GET 请求访问管理员和_id详细信息
Restrict users from a GET request to access admin and _id details
问:
我正在配置服务器端,并尝试限制用户访问其 _id 和 admin 字段,默认情况下由 GET 请求设置为 false。原因是我想避免具有 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, (req,res,next) => {
res.statusCode = 403
res.end('POST operation not supported on /my-profile')
})
.put(authenticate.verifyUser, (req,res,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', 'application/json')
res.json(user)
}, (err) => next(err))
.catch((err) => next(err))
})
.delete(authenticate.verifyUser, (req,res,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))
})
这就是它到目前为止在 Postman 中显示的内容:
{
"admin": false,
"_id": "5f9ee6c33beb0101e858af32",
"username": "paul",
"title": "mr",
"email": "[email protected]",
"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
}
有人可以帮忙吗?谢谢!
答: 暂无答案
下一个:Next.Js 的服务器端
评论