После просмотра моего собственного кода я заметил, что не использовал атрибут '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), не уверен, что принят ...