Spring Security 3.0: Como especificar URLs aos quais um filtro personalizado se aplica?
Estou usando o Spring Security 3.0 com JSPs. Eu criei um RequireVerificationFilter que redireciona usuários não verificados para uma página "verifique seu email".
Adicionei o filtro à pilha de filtros de segurança da mola em último lugar, da seguinte forma:
Definição de bean no meu app-config.xml:
<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />
Filtro adicionado à lista de filtros de segurança spring em meu security-config.xml:
<custom-filter ref="requireVerificationFilter" after="LAST" />
O filtro funciona, mas filtra seu próprio URL de redirecionamento. Ou seja, o filtro redireciona usuários não verificados para / acessa / verifica, mas esse URL também é capturado pelo filtro, que tenta redirecionar ad infinitum.
Eu tentei usar o<filter-mapping>
para restringir os URLs aos quais esse novo filtro se aplica, mas isso não parece funcionar da maneira que eu pensava. Aqui está a entrada web.xml que adicionei de qualquer maneira:
<filter>
<filter-name>requireVerificationFilter</filter-name>
<filter-class>com.ebisent.web.RequireVerificationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requireVerificationFilter</filter-name>
<url-pattern>/account/*</url-pattern>
</filter-mapping>
Li a seção "Adicionando seus próprios filtros" na documentação de segurança da primavera, mas não encontrei uma resposta.
Minha pergunta é: como posso especificar a quais URLs meu filtro se aplica?
ATUALIZAR:
Eu consegui isso especificando o URL para permitir dentro do próprio filtro. Isso funciona bem para mim, mas se houver uma maneira melhor / mais "flexível" de fazê-lo, ficaria feliz em ouvi-lo.