Spring 如何确保弹簧座积木放置可以';Don’别把唱片卖给新的主人

Spring 如何确保弹簧座积木放置可以';Don’别把唱片卖给新的主人,spring,spring-security,spring-data,spring-rest,spring-el,Spring,Spring Security,Spring Data,Spring Rest,Spring El,我的应用程序想使用SpringREST库获取和保存我的组织对象。我有一个crudepository扩展,用于检查userId字段是否与主体的字段匹配: @RepositoryRestResource(path=“org”) 公共接口OrgRepository扩展了Crudepository{ @凌驾 @PostAuthorize(“returnObject.userId==principal.id | | hasRole('ROLE_ADMIN')”) 公共组织findOne(@Param(“i

我的应用程序想使用SpringREST库获取和保存我的组织对象。我有一个crudepository扩展,用于检查userId字段是否与主体的字段匹配:

@RepositoryRestResource(path=“org”)
公共接口OrgRepository扩展了Crudepository{
@凌驾
@PostAuthorize(“returnObject.userId==principal.id | | hasRole('ROLE_ADMIN')”)
公共组织findOne(@Param(“id”)Long id);
@凌驾
@PostFilter(“filterObject.userId==principal.id | | hasRole('ROLE_ADMIN')”)
公共可数findAll();
@凌驾
@抑制警告(“未选中”)
@后授权(“reutrnObject.userId==principal.id | | hasRole('ROLE_ADMIN')”)
}
我已经在Ajax请求上成功地测试了以下内容:

  • PUT/org/2,当主体具有role\u ADMIN时,带有字段(userId:2)
  • PUT/org/2,当主体不是admin并且具有(returnObject.userId==2和principal.id==2)时,带有字段(userId:2)
  • 当主体不是admin并且具有(returnObject.userId==1和principal.id==2)时,放置/org/1,带有字段(userId:1)。它使用HTTP 403失败,这是可取的
  • POST/org,带有字段(userId:2),当主体不是admin时
OrgRepository配置似乎工作正常。然而,我还有一个担忧。如果浏览器用户编辑文章以使其(userId:99)可用,该怎么办。然后用户2为其他用户更改了数据

如果我使用带有DAO类的控制器,我可以使用代码来修补上传的数据,这样userId字段就必须与principal.id值匹配。但我这里只有注释


有没有办法强迫别人(userId你找到一个合理的解决方案了吗?我真的在寻找一个合适的解决方案。我从来没有得到一个好的答案。我猜我对这个API要求太多了。在它的位置我创建了一个DAO答案。在上看到一个完整的实现。好的,谢谢。在这一点上我得到了相同的印象。事实上。我要学习你你的代码。看起来很整洁:)