Я использую Spring Security 3.0 с JSP. Я создал RequireVerificationFilter, который перенаправляет непроверенных пользователей на страницу «Подтвердите свой адрес электронной почты».
Я добавил фильтр в стек весенних фильтров безопасности в последнем месте следующим образом:
Определение компонента в моем app-config.xml:
<bean id="requireVerificationFilter" class="com.ebisent.web.RequireVerificationFilter" />
Фильтр добавлен в список весенних фильтров безопасности в моем security-config.xml:
<custom-filter ref="requireVerificationFilter" after="LAST" />
Фильтр работает, но фильтрует собственный URL-адрес перенаправления. То есть фильтр перенаправляет непроверенных пользователей на / access / verify, но этот URL также перехватывается фильтром, который пытается выполнить перенаправление до бесконечности.
Я попытался использовать тег
чтобы ограничить URL-адреса, к которым применяется этот новый фильтр, но, похоже, это не работает так, как я думал. Вот запись web.xml, которую я все равно добавил:
<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>
Я прочитал «Добавление собственных фильтров» в весенней документации по безопасности, но не нашел ответа.
Мой вопрос: как я могу указать, какие URL-адреса мой фильтр применяется к?
ОБНОВЛЕНИЕ:
Я получил эту работу, указав разрешенный URL-адрес в самом фильтре. Это отлично работает для меня, но если есть лучший / более «упругий» способ сделать это, я был бы рад его услышать.