Как использовать более одного пользовательского фильтра, вызываемого друг за другом? - PullRequest
2 голосов
/ 14 октября 2010

Привет всем, я использую Spring Security 3.0.2 и у меня есть один пользовательский фильтр, и его заказ является последним и я хочу добавить другой фильтр после этого фильтра, следующий конфиг правильно?

<custom-filter position="LAST" ref="filter1"/>
<custom-filter after="LAST" ref="filter2"/>

1 Ответ

3 голосов
/ 14 октября 2010

После просмотра моего собственного кода я заметил, что не использовал атрибут 'ref', но вместо этого помещаю этот тег в определение бина следующим образом:

<bean id="ntlmFilter" class="org.springframework.security.ntlm.samples.failover.NtlmProcessingFilter">
    <sec:custom-filter position="NTLM_FILTER" />
    <property name="authenticationManager" ref="authenticationManager" />
    <property name="retryOnAuthFailure" value="false" />
    <property name="securityConfiguration" ref="securityConfiguration" />
</bean>

Источник: http://github.com/aloiscochard/spring-security-ntlm-samples/blob/master/spring-security-ntlm-samples-failover/src/main/resources/applicationContext-security.xml

Даже если это для Spring-Security 2, поведение в версии 3 такое же.

Вы можете найти все возможные позиции в перечислении org.springframework.security.config.http.SecurityFilters.:

http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.security/spring-security-config/3.0.2.RELEASE/org/springframework/security/config/http/SecurityFilters.java

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

Например:

  • один фильтр до LAST и один в LAST (но не после LAST! Ничего не может быть после LAST!)
  • или один фильтр до SWITCH_USER_FILTER и один после.

Не знаете, где вы размещаете свои теги?но мне нравится иметь их непосредственно внутри bean-компонента фильтра ... проще в обслуживании: -)

Надеюсь, это поможет!

PS: Поскольку позиции основаны на целых числах, вы можете вместо этого поставить числозначения перечисления (предупредите нас о правильном номере позиции, посмотрите на логику внутри перечисления SecurityFilters), не уверен, что принят ...

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