我正在使用Spring Security ACL。但是我有一个要求所有人都应该可以访问一个特定的对象,而无需检查hasPermission或hasRole。
我不确定如何执行此操作,我尝试了以下操作:
@NotNull
@PostAuthorize("hasPermission(returnObject, 'read') or #aLong==1")
@Override
Optional<DBO_TYPE> findById(@NotNull Long aLong);
,还使用returnObject
@NotNull
@PostAuthorize("hasPermission(returnObject, 'read') or returnObject.id==1")
@Override
Optional<DBO_TYPE> findById(@NotNull Long aLong);
任何有关如何实现这一目标的建议都将受到赞赏。
答案 0 :(得分:0)
我能够通过以下方法实现这一目标:
@NotNull
@PostAuthorize("hasPermission(returnObject, 'read') or isExceptionObject(returnObject)")
@Override
Optional<DBO_TYPE> findById(@NotNull Long aLong);
并在isExceptionObject对象中进行了我所需的检查,如下所示:
public boolean isExceptionObject(Object target) {
if (target != null
&& ((Optional) target).get().getId() == 1)
return true;
return false;
}
是否有更好的方法?欣赏你的想法。