Какой смысл иметь в Serv Security и Servlet Filters, и AuthenticationProviders? - PullRequest
0 голосов
/ 23 февраля 2020

Я немного запутался после прочтения документации ... кажется, что вы можете выполнить полную аутентификацию с помощью любого механизма, не используя другой. Вы можете получить доступ к запросу в AuthenticationProvider и установить контекст безопасности в фильтре сервлета. Так почему же оба?

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

По сути, вы можете выполнить любую (пользовательскую) аутентификацию и авторизацию в фильтре веб-приложения на основе сервлета, если вы решите это сделать.

Однако Spring-Security предназначена не только для сервлета

Реализация AuthenticationProvider может использоваться для аутентификации многими различными фильтрами веб-приложений на основе сервлетов, а также, например, сетевыми приложениями на основе сокетов и даже собственными не-веб-приложениями и Как правило, он полностью зависит от протокола связи, на который опирается ваше приложение.

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

0 голосов
/ 23 февраля 2020

Это своего рода чистый дизайн кода. AuthenticationProvider и связанные с ней объекты являются более общей моделью, которая не имеет ничего, чтобы зависеть от связанных с инфраструктурой вещей, таких как Servlet.

Она аналогична модели домена, описанной в . Отделяя заботу об инфраструктуре от фактических моделей домена, мы можем повторно использовать эту же модель домена (то есть коды) в других инфраструктурных средах, таких как ее использование в автономном настольном приложении или в реактивном веб-приложении, которое не имеет такой концепции, как Servlet. Фильтр там.

Вы можете думать, что Servlet Filter - это своего рода инфраструктурные коды, которые связывают два мира вместе. (Мир сервлетов и мир модели безопасности домена Spring).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...