Dam*_*ien 4 java spring spring-security
这个问题与此网址上的问题有关 Spring Security 3.2 CSRF对多部分请求的支持
我尝试了这个完全相同的设置以及要点,但我不能让它工作,除非我在网址中有_csrf令牌.我在表单主体中将它作为隐藏字段并在安全过滤器之前指定了过滤器,但没有任何欢乐,并且每次都使用无效csrf令牌的调试日志消息失败
任何有关这方面的帮助将不胜感激
干杯达米恩
没有要点就很难找到,但我终于明白了!
实际上它与Spring安全性无关.真正的问题只出在SpringFramework多部分配置中.但正因为如此,请求似乎根本没有参数(既不是_csrf,也不是file),并且第一个检测它是CsrfFilter.我删除了有关安全性的所有内容,错误是Requested parameter file absent(或类似的东西......)
如Spring Framework手册中所述,multipart可以通过两种方式处理:
使用servlet 3.0配置
CommonsMultipartResolver在mvc-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>
Run Code Online (Sandbox Code Playgroud)
接下来,您必须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>
Run Code Online (Sandbox Code Playgroud)
MultipartFilter使用StandardServletMultipartResolver默认值.你只需要添加一个<multipart-config>在声明元素DispatcherServlet在web.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>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3116 次 |
| 最近记录: |