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