Из-за чего не работает @EnableMethodSecurity(mode=AdviceMode.ASPECTJ)?
Ссылка скопирована
По вводным: при активации режима AspectJ в Spring Security
@EnableMethodSecurity(mode=AdviceMode.ASPECTJ)
Выбрасывает исключение:
По вводным: caused by: java.lang.ClassNotFoundException: org.springframework.security.authorization.method.aspectj.PreFilterAspect
Нужно понять: откуда взять этот класс? Какую зависимость нужно добавить?
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
VPN
Как правильно настроить vless для Android TV?
1 ответ
Visual Studio Code
Как лучше убрать тень у панели слева в VS Code?
1 ответ

@EnableMethodSecurity(mode=AdviceMode.ASPECTJ)не работает, если в проекте не настроено реальное AspectJ weaving. Это частая путаница: режим PROXY работает через Spring AOP proxies, а режим ASPECTJ требует compile-time или load-time weaving. Просто указать mode=ASPECTJ недостаточно.Если вам не нужен именно AspectJ, используйте режим по умолчанию:
@Configuration @EnableMethodSecurity public class SecurityConfig { }
Он покрывает большинство сценариев
@PreAuthorize,@PostAuthorize,@Secured. Но у proxy-режима есть ограничения: не срабатывает self-invocation, final/private методы и вызовы внутри того же объекта.Если нужен AspectJ, придется настроить зависимости и weaving. Для load-time weaving нужен javaagent:
-javaagent:/path/to/aspectjweaver.jar
И конфигурация LTW в Spring. Также нужны соответствующие зависимости AspectJ. Без этого аннотации безопасности просто не будут перехватывать вызовы так, как вы ожидаете.
Практически я бы сначала проверил, срабатывает ли
@PreAuthorizeв стандартном режиме. Если да, проблема не в безопасности, а в выбранном mode. Если не срабатывает и в стандартном режиме, проверьте, что включен Spring Security, пользователь аутентифицирован, выражение корректное, а метод вызывается через Spring-контейнер, а не черезnew.