【发布时间】:2016-02-02 22:09:09
【问题描述】:
我有一个使用 JSON 对象(用户)提交的 REST 端点,我只是将相应的 mongo 记录设置为该 JSON 对象。这省去了我在服务方法和端点中更新模式更改的麻烦,只留下 Mongoose 模型进行更新。
如果有的话,什么是更安全的方法?
用户 JSON 示例
{
'fname': 'Bill',
'lname': 'Williams',
'email': 'bill@billwilliams.com',
'settings': {
'strokeColor': '#FF0000'
}
}
来自我的 Angular 服务
Update: function(my_user) {
return $http.put('http://api.domain.com/v1/api/users/' + _user.id, {
user: my_user,
token: window.localStorage['token']
});
}
我在 Node 中的 REST 端点
api.route('/users/:user_id')
.put(function(req, res) {
User.findById(req.params.user_id, function(err, user) {
userData = req.body.user;
if (user) {
//-- This is potential trouble area?
User.update({'_id': user._id}, {$set: userData});
user.save(function(err) {
res.json({
success: true,
message: 'User updated'
});
}); //-- end findById()
}); //-- end /users/:user_id put() route
【问题讨论】:
-
您绝对应该验证该对象以确保它仅具有允许特定用户更新/添加的键,并且允许用户更新该特定用户记录。
标签: javascript angularjs node.js mongodb rest