Spring Security 3.2,CSRF和多部分请求

 风里火 发布于 2022-12-29 13:37

这个问题与此网址上的问题有关 Spring Security 3.2 CSRF对多部分请求的支持

我尝试了这个完全相同的设置以及要点,但我不能让它工作,除非我在网址中有_csrf令牌.我在表单主体中将它作为隐藏字段并在安全过滤器之前指定了过滤器,但没有任何欢乐,并且每次都使用无效csrf令牌的调试日志消息失败

任何有关这方面的帮助将不胜感激

干杯达米恩

1 个回答
  • 没有要点就很难找到,但我终于明白了!

    实际上它与Spring安全性无关.真正的问题只出在SpringFramework多部分配置中.但正因为如此,请求似乎根本没有参数(既不是_csrf,也不是file),并且第一个检测它是CsrfFilter.我删除了有关安全性的所有内容,错误是Requested parameter file absent(或类似的东西......)

    如Spring Framework手册中所述,multipart可以通过两种方式处理:

    使用Apache commons fileupload

    使用servlet 3.0配置

      您遵循相关帖子的第一个解决方案,并配置CommonsMultipartResolvermvc-dispatcher-servlet.xml.第一个问题是它MultipartFilter与全局ServletContext相关,并MultipartResolver在根应用程序上下文中查找它而不是在servlet特定的上下文中.

    第二个问题是你忘了在你的Apache中添加一个依赖Apache commons fileupload pom.xml.

    所以你必须首先在你的.中添加这种依赖性 pom.xml

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    

    接下来,您必须filterMultipartResolver从中删除bean mvc-dispatcher-servlet.xml并在根应用程序上下文中声明它.作为快速而肮脏的修复,您可以将其添加到spring-security.xml:

    <beans:bean id="filterMultipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <beans:property name="maxUploadSize" value="100000000" />
    </beans:bean>
    

      另一种配置是使用servlet 3.0的多部分处理.无需依赖apache commons fileupload,也不需要将任何bean添加到配置中,因为MultipartFilter使用StandardServletMultipartResolver默认值.

    你只需要添加一个<multipart-config>在声明元素DispatcherServletweb.xml

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <multipart-config>
            <!--location>/tmp</location-->
            <max-file-size>1000000</max-file-size>
        </multipart-config>
    </servlet>
    

    2022-12-29 13:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有