Spring CSRF-токен не работает, когда отправляемый запрос является составным запросом

Я использую,

Spring Framework 4.0.0 RELEASE (GA)Spring Security 3.2.0 RELEASE (GA)Struts 2.3.16

В котором я использую встроенный токен безопасности для защиты от CSRF-атак.

Форма Struts выглядит следующим образом.



    

Сгенерированный HTML-код выглядит следующим образом.



    

Это прекрасно работает, если запрос не является составным в этом случае запрос заканчивается кодом состояния 403.

HTTP-статус 403 - Неверный токен CSRFноль' был найден в параметре запроса '_csrf» или заголовокX-CSRF-ЗНАК».

тип Отчет

сообщение Неверный токен CSRFноль' был найден в параметре запроса '_csrf» или заголовокX-CSRF-ЗНАК».

описание Доступ к указанному ресурсу был запрещен.

spring-security.xml Файл выглядит следующим образом.




    

    
        
            
        

        

        
            
            
            
            
             
        

        
        
        
    

    

    
        
        
    

    
        
            
                
            
        
    

    
        
        
    

    
    

    
        
    

Итак, где искать этот токен, когда запрос состоит из нескольких частей? (Это не должно быть связано со Struts вообще.)

РеализацияUserDetailsService можно найти вэтот мой предыдущий вопрос, если нужно.

размещениеMultipartFilter до весны безопасности тоже не помогло.

web.xml Файл выглядит следующим образом.




    
        contextConfigLocation
        
            /WEB-INF/applicationContext.xml
            /WEB-INF/spring-security.xml
        
    

    
        MultipartFilter
        org.springframework.web.multipart.support.MultipartFilter
    

    
        springSecurityFilterChain
        org.springframework.web.filter.DelegatingFilterProxy
    

    
        MultipartFilter
        /*
    

    
        springSecurityFilterChain
        /*
    

    
        AdminLoginNocacheFilter
        filter.AdminLoginNocacheFilter
    

    
        AdminLoginNocacheFilter
        /admin_login/*
    

    
        NoCacheFilter
        filter.NoCacheFilter
    

    
        NoCacheFilter
        /admin_side/*
    

    
        org.springframework.web.context.ContextLoaderListener
    

    
        Description
        org.springframework.web.context.request.RequestContextListener
    

    
        org.springframework.security.web.session.HttpSessionEventPublisher
    

    
        struts2
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        
            struts.devMode
            true
        
    

    
        struts2
        /*
    

    
        
            30
        
    
    
        index.jsp
    

Это работает только тогда, когда токен добавляется в качестве параметра строки запроса, как указано ниже, однако это не рекомендуется.


    ...

Ответы на вопрос(4)

Ваш ответ на вопрос