【发布时间】:2017-04-25 10:10:53
【问题描述】:
我希望为某些 Object o 提供围绕 CrudRepository 方法 delete(Integer id) 的安全性。我想确保即将删除的对象是由当前删除对象的人(或管理员)创建的。我一直在使用@PreAuthorize 作为授权方式。为了保护 delete(Object o) 方法,我所要做的就是
@PreAuthorize("(#o.info.creator == authentication.principal.name) or (hasRole('ADMIN'))")
@Override
public void delete(@P("o")Object o);
但是,对于按 ID 删除,我无法找到一种方法来对照我们的主体名称检查生成的“创建者”。我最初的想法是这样的
@PreAuthorize("(**some Function Getting me the Object(#id)**.info.creator== authentication.principal.name)")
@Override
public void delete(@P("id")Integer id);
有没有办法在授权之前从 ID 获取到对象?或者我应该采取不同的方法
【问题讨论】:
-
找到任何解决方案了吗?
标签: spring spring-security spring-data