在rest api中安全更新对象

时间:2016-12-16 19:54:42

标签: java rest

我创建了rest api:

获取metohd on / api / address返回当前登录用户的地址。然后用户可以编辑一些数据并通过POST将编辑过的json发送到/ api / address。但是用户也可以发送preapred json来休息,而不是UI。

例如:

{id:2, street: Madison, flatNumber: 14}

然后在AddressService:

public void updateUser(AddressDto address) {
  repository.findOneById(address.getId()).ifPresent(a -> {
    a.setFlatNumber(address.getFlatNumber());
    respository.update(a);
  });
}

但是用户可以使用不同的id发送准备好的json。并编辑不属于他的地址。如何防止这种情况?

我想确保用户是否只能更新他们的数据。我应该每次检查实体是否与登录用户有关吗?

1 个答案:

答案 0 :(得分:0)

updateUser方法中,修改代码以根据用户提取记录。

repostiory.findAddressByUserAndId(user, address.getId())

如果您每个用户只需要一个地址,请考虑使用地址记录的ID。