Helpers - компьютеры, интернет, программирование

SpringSecurity: FilterChainProxy: VirtualFilterChain --› Что заполняет исходную цепочку?

Я пишу новую конфигурацию безопасности Spring. Мне нужно импортировать некоторые другие библиотеки компании с их собственной конфигурацией/фильтрами. Каждый фильтр с аннотацией @Component/@Bean отображается в свойстве originalChain объекта FilterChainProxy и запускается по запросам. Я искал документацию и не могу понять, что такое свойство originalChain, почему оно там, что определяет фильтры, которые туда идут, и т. д. Я хочу остановить запуск неиспользуемых фильтров.

В одной статье он описывается как originalChain, представляющий нативную цепочку фильтров, то есть Web Filter. Я не смог понять, что это значит.

Что такое оригинальная цепочка?


  • Я не уверен, какой код будет здесь полезен, но я могу опубликовать все, что нужно. 30.06.2021

Ответы:


1

Каждое приложение сервлета может иметь несколько исполняемых реализаций Filter, прежде чем достигнет фактического Servlet. А общая картина примерно такая:

Представление цепочки фильтров сервлетов

Spring предоставляет реализацию фильтра с именем DelegatingFilterProxy, который позволяет навести мост между жизненным циклом контейнера сервлетов и Spring ApplicationContext. Контейнер Servlet позволяет регистрировать фильтры, используя свои собственные стандарты, но он не знает о компонентах, определенных Spring. DelegatingFilterProxy можно зарегистрировать с помощью стандартных механизмов контейнера сервлетов, но делегировать всю работу Spring Bean, который реализует фильтр.

Обзор DelagatingFilterProxy

Имея в виду эту картину, мы можем сказать, что DelegatingFilterProxy — это подход, который Spring MVC использует для использования своих собственных стандартов при регистрации фильтров.

Когда вы предоставляете Spring Bean, который реализует Filter, он будет зарегистрирован внутри DelegatingFilterProxy.

FilterChainProxy — это специальный Filter, предоставляемый Spring Security, который позволяет делегировать множество экземпляров Filter через SecurityFilterChain. Поскольку FilterChainProxy — это Bean, он обычно упаковывается в файл DelegatingFilterProxy.

FilterChainProxy и SecurityFilterChain

Вы можете видеть, что на этом гипотетическом изображении выше есть FilterChainProxy в качестве второго фильтра в цепочке фильтров (пунктирная рамка). Как только FilterChainProxy завершит обработку своих SecurityFilterChain фильтров, он вызовет originalChain (пунктирная рамка), чтобы возобновить обработку оставшихся фильтров, в приведенном выше сценарии — Filter2.

Также есть отличное объяснение в Spring Security ссылка, где я взял большую часть ресурсов, присутствующих в этом тексте.

Если вы хотите предотвратить регистрацию Filter в Spring, вы можете обратиться к этому вопрос о StackOverflow.

30.06.2021
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..