- Spring 6.0.13
spring-context
spring-context-support - spring-orm
- spring-webmvc
< /ul> - Spring Security 6.1.4
- Спящий режим 6.2.13.Final
Я начал обновление до последней версии и столкнулся с проблемой, из-за которой прокси-классы Hibernate, созданные ByteBuddy, не распознаются в моем поиске ACL, поэтому мой @ Постфильтр не удается — в таблицах ACL хранятся исходные имена классов, но прокси-серверы времени выполнения не совпадают. (Контекст см. https://github.com/spring-projects/spri ... sues/21111.)
В настоящее время я не понимаю, почему эта проблема не получила более широкого распространения. сообщил. Используют ли большинство пользователей одну и ту же модель ACL или @PostFilter (или полагаются на встроенную поддержку Spring Data JPA) или есть другой предпочтительный обходной путь?
В настоящее время я использую обходной путь: https://github.com/spring-projects/spri ... -453468521 Я скопировал и исправил Spring ObjectIdentityImpl безопасности в мою кодовую базу (сохраняя исходный пакет), чтобы логика обнаружения прокси работала правильно. Однако в долгосрочной перспективе это не идеальное решение, поскольку мне придется обновлять патч с каждым выпуском Spring Security. Кроме того, я получаю предупреждение о сборке:
Код: Выделить всё
[WARNING] org.springframework.security.acls.domain.ObjectIdentityImpl scanned from multiple locations:
file:///…/target/classes/org/springframework/security/acls/domain/ObjectIdentityImpl.class,
jar:file:///…/spring-security-acl-6.4.2.jar!/org/springframework/security/acls/domain/ObjectIdentityImpl.class
Перехожу на использование Spring Data:
Я слышал это могло бы обойти некоторые из этих проблем, но мне неясно, полностью ли это устраняет несоответствие или это повлияет на саму модель ACL. Конфигурация acl на уровне объекта моего домена очень старая, основанная на: http://krams915.blogspot.fr/2011/01/spr ... orial.html
Используя обходной путь в моем коде, действуйте по-другому, чтобы избежать проблемы.
Как?
Разветвление ACL Spring Security:
Создавайте и используйте исправленный артефакт Maven (например, версия 6.4.2-patched1), исправляющий обнаружение прокси-сервера.
Пользовательская стратегия обнаружения прокси-сервера:
Реализация пользовательской ObjectIdentityRetrievalStrategy (или аналогичный), который отменяет прокси-классы, прикрепите его к AclPermissionEvaluator и AclPermissionCacheOptimizer, гарантируя, что всегда используется правильный пользовательский класс. Однако я не уверен, что этот подход позволит отменить проксирование в других случаях, которые могут запускать запросы к базе данных в обход полезности прокси.
Отключение прокси вручную в DAO:< /strong>
Интегрировать логику отмены проксирования в мой уровень доступа к данным, но это кажется беспорядочным и подверженным ошибкам.
Мой вопрос: какой самый надежный и удобный в обслуживании подход к решению проблемы? имя класса прокси несоответствие, чтобы поиск ACL (и, следовательно, @PostFilter) работал правильно?
Будем признательны за любые идеи или альтернативные стратегии для обработки развертывания прокси-сервера в этом контексте!
Подробнее здесь: https://stackoverflow.com/questions/793 ... ity-acl-po