springSecurityFilterChain как это работает?

#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 ? Это в основном делает то, что вы хотите…