在Spring Security ACL中授予对对象的读取权限

时间:2018-11-02 16:38:45

标签: java spring-boot spring-security acl

我正在使用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);

任何有关如何实现这一目标的建议都将受到赞赏。

1 个答案:

答案 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;
}

是否有更好的方法?欣赏你的想法。