Переключите обработчик аутентификации в диспетчере аутентификации - PullRequest
1 голос
/ 29 февраля 2012

Я знаю, что есть много документов о Spring Security. Однако я не могу найти ответ на свою проблему.

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

<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
    <property name="providers">
        <list>
            <ref local="ldapAuthenticationProvider"/>
            <ref bean="${bean.daoAuthenticationProvider}"/>
            <ref bean="anonymousAuthenticationProvider"/>

        </list>
    </property>
</bean>

Однако я хочу переключаться между доступными провайдерами, основываясь на параметре запроса, а не пробовать их всех. Мне было интересно, если это возможно, чтобы переключиться с помощью фильтра или любым другим способом?

1 Ответ

0 голосов
/ 29 февраля 2012

Подкласс ProviderManager и переопределение getProviders(). Поскольку getProviders() не принимает никаких параметров, вам нужно установить ThreadLocal где-нибудь в цепочке фильтров либо с запросом, либо с флагом, что у запроса есть нужный параметр.

...