Spring's Security Метод hasPermission имеет реализацию, которая (как я понял) предназначена для передачи имени класса ( targetType ) и идентификатора объекта ( Serializable * 1006). *).
Не могли бы вы объяснить (хотя бы в целом) , как правильно реализовать эту реализацию ? Я искал пример передачи идентификатора объекта и не нашел ничего (даже в Spring do c).
В моей ситуации я хочу проверить разрешение пользователя DELETE
на некоторые из моих классов (например, «Цель»). Все эти классы имеют универсальные методы и поля, поэтому у меня может быть универсальный лог c для проверки разрешения внутри PermissionEvaluator
.
. Для этого я собираюсь передать идентификатор объекта и имя класса объекта. в PermissionEvaluator и выполните проверку здесь следующим образом:
@PreAuthorize("hasPermission(#id, 'Goal','DELETE')")
Звучит неплохо, пока не доходит до реализации, потому что я не совсем понимаю, как я могу получить экземпляр Object по имени класса и идентификатору внутри Оценщик разрешений.
@Component
public class CustomPermissionEvaluator implements PermissionEvaluator
@Override
public boolean hasPermission(Authentication authentication, Serializable serializable, String targetType,
Object permission) {
Да, я могу создать экземпляр объекта Class.forName(targetType)
, но как я могу получить его экземпляр Id (serializable)
из соответствующего репозитория? (У меня разные хранилища для каждого объекта). @Autowiring
все мои 30 хранилищ будут безумием.