sla*_*dan 13 java spring jpa spring-boot
我使用spring boot在我们的数据库中通过JPA存储复杂的json结构.
json结构的根代表一个"House"对象."House"对象包含几个"Furnitures".例如:
House ID: 4711
|- Furniture: ID 4712 (with confidential information)
Run Code Online (Sandbox Code Playgroud)
用户对某些房屋及其所有"家具"具有读/写权限.
我的问题是,通过REST-API,用户可以"窃取"来自其他房屋的家具,如果他知道他们的主要钥匙; 请求像这样一个:
POST http://localhost:8080/house
{
houseId: 99991337,
furnitures: [{
furnitureId: 4712,
...
}]
}
Run Code Online (Sandbox Code Playgroud)
这导致:
House ID: 4711
|- empty!
House ID: 99991337
|- Furniture 4712 (with confidential information)
Run Code Online (Sandbox Code Playgroud)
虽然用户没有获得House 4711的许可,但他将House 4711与家具4712"取消关联",而是将其与House 99991337联系起来.
我如何禁止改变家具之家?
在JPA-Entities中,存在从房屋到家具的双向OneToMany关系.我想可能在数据库中搜索任何传入请求的家具,检查所有这些请求的所有权限.但我更愿意只需要检查众议院的许可(因为在现实生活中,我有更多的实体,如家具)
如果我的理解是正确的,只需按请求中提供的userId
和搜索权限表即可。houseId
如果存在匹配,则用户有权更改houseId
.
根据权限,您可以设置或不设置houseId
要保存到数据库的对象。
如果您仍然希望用户更改,那么您可以通过为对象提供和来furniture data
仅保存实体。furniture
furnitureId
text
new Furniture()
归档时间: |
|
查看次数: |
461 次 |
最近记录: |