#java #spring #spring-mvc
#java #весна #spring-mvc
Вопрос:
Я пытаюсь реализовать свой собственный фильтр в spring Framework с помощью springSecurityFilterChain
. Я бы реализовал этот фильтр в весеннем контенте, а не в web.xml . В web.xml Я бы просто использовал один фильтр, который делегирует все запросы фильтрам, расположенным в spring content. Например:
Мой web.xml файл:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Теперь все запросы будут делегированы фильтрам, расположенным в содержимом spring.
Итак, мы начинаем создавать класс bean filter, который реализует Filter
:
package myapplication.filters
public class ExampleFilter implements Filter {
private ServletContext context;
public void init(FilterConfig fConfig) throws ServletException {
// some code here
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// some filter here
}
public void destroy() {
//we can close resources here
}
Теперь я бы использовал свой фильтр для вызова doFilter
метода, когда какое-либо (человеческое или другое приложение) хочет получить ресурс из url: /example. Итак, нам нужно настроить spring в secruity.xml досье. На этом шаге я бы добавил, что я не хочу авторизовываться с помощью html from. Я получу параметры, такие как имя пользователя и пароль, при приближении к POST-запросу
Мой secruity.xml:
<http use-expressions="true" auto-config="false" >
<!--
HERE I DECLARE MY CUSTOM FILTER BU WHERE IS PATTERN.
FROM WHERE SPRING WILL KNOWN THAT IF REQUEST COME /example
THAN CALL METHOD doFilter FROM CLASS myapplication.filters.ExampleFilter
-->
<custom-filter ref="ExampleFilter " />
</http>
<bean id="ExampleFilter " class="myapplication.filters.ExampleFilter"></bean>
Комментарии:
1. И почему ваш фильтр отличается от обычного фильтра, который обрабатывает запросы post
j_spring_security_check
? Это в основном делает то, что вы хотите…