Защита приложения с помощью AspectJ против SpringInterceptor - PullRequest
0 голосов
/ 08 мая 2019

Это очень сложный вопрос, и я это знаю.Что ж, я сделаю все возможное, чтобы уточнить это.

Я пишу API в Spring, защищенный под JWT и OAuth2, и я не хочу использовать уровень Spring Security.Другими словами, я хочу создать свой собственный слой безопасности со своими правилами и т. Д.

Тем не менее, я нашел два варианта создания этого слоя за границей.

  • AspectJ
  • Spring Interceptors

AspectJ

С AspectJ я могу создать аспект, чтобы обернуть каждый метод, аннотированный @MySecurityAnnotation(role="bar", permission="foo", group="blah"), и предоставитьпользователь будет вызывать joinPoint без правильного разрешения.

При таком подходе код запутывается, поскольку код AspectJ внедряет в конечные файлы .class .(пожалуйста, поправьте меня, если я говорю ерунду).С другой стороны, мне не нужно проверять с помощью отражения аннотированных типов, потому что код уже обернут.


Spring Interceptor

С перехватчиком, как следует из названия, создается одна точка перехвата для каждого HandlerMethod, и теперь мне нужно проверять в каждом запросе, указывает ли запрос на HandlerMethod, как это должно быть для проверки учетных данных пользователей.

Итак Я думаю , что это медленно, чем реализация AspectJ, потому что нам нужно проверить с помощью отражения аннотированные методы, чтобы получить роли / разрешения, необходимые для доступа к конечной точке.


ОКЯ объяснил оба сценария, теперь я просто хочу знать, какой из них будет лучшим и в какой ситуации.Есть кто-то, кто часами думает об этом, как я?Есть ли другая реализация, не указанная в списке?Есть ли лучший способ реализовать безопасность в Spring API без уровня Spring Security?Пожалуйста, дайте мне знать.

Спасибо за всю эту помощь.

...