Это очень сложный вопрос, и я это знаю.Что ж, я сделаю все возможное, чтобы уточнить это.
Я пишу 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?Пожалуйста, дайте мне знать.
Спасибо за всю эту помощь.