ssh 框架 + springsecurity 下使用 struts2 fileupload 的冲突问题
struts2文件上传功能使用,简单易操作,网上资料很多,此处略。
当项目中使用springsecurity,struts2的文件上传会产生问题,File对象总是NULL,无法获得form表单中file字段的二进制文件流,经过排出检查,发现是struts2的fileUpload拦截器与springsecurity的拦截器springSecurityFilterChain冲突造成,也就是两者filter-mapping的位置放置错误造成的。正确的放置顺序应该是如下:
<filter-mapping>
<filter-name>hibernateOpenSessionInViewFilter</filter-name>
<url-pattern>/j_spring_security_check</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>hibernateOpenSessionInViewFilter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

浙公网安备 33010602011771号