如何防止实体关系发生变化?
2022-09-04 04:34:41
我正在使用spring boot通过JPA在我们的数据库中存储复杂的json结构。
json 结构的根表示一个“House”对象。“房屋”对象包含多个“家具”。例如:
House ID: 4711
|- Furniture: ID 4712 (with confidential information)
用户对某些房屋及其所有“家具”具有读/写权限。
我的问题是,通过REST-API,用户可以从其他房屋“窃取”家具,如果他知道他们的主键;像这样的请求:
POST http://localhost:8080/house
{
houseId: 99991337,
furnitures: [{
furnitureId: 4712,
...
}]
}
这导致:
House ID: 4711
|- empty!
House ID: 99991337
|- Furniture 4712 (with confidential information)
尽管用户没有获得House 4711的许可,但他将家具4712与House 4711“断开链接”,而是将其链接到House 99991337。
如何禁止更换家具屋?
在JPA实体中,存在从房屋到家具的双向一对多关系。我想过也许可以在数据库中搜索任何传入请求的家具,检查所有权限。但我宁愿只需要检查房子的许可(因为在现实生活中,我有更多的实体,如家具)