Предоставление разрешения на чтение объекта в весеннем списке безопасности ACL - PullRequest
0 голосов
/ 02 ноября 2018

Я использую 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 голосов
/ 02 ноября 2018

Мне удалось добиться этого, используя следующий подход:

@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;
}

Есть ли лучший способ сделать это? Цените свои мысли.

...