Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring security 文件上传与Spring安全_Spring Security - Fatal编程技术网

Spring security 文件上传与Spring安全

Spring security 文件上传与Spring安全,spring-security,Spring Security,基于,我设置了一个多部分文件管理器,如下所示: @订单1 公共类SecurityWebAppInitializer 扩展AbstractSecurityWebApplicationInitializer{ @凌驾 SpringSecurityFilterChainServletContext之前的受保护无效servletContext{ insertFiltersservletContext,新的MultipartFilter; } 在文件上传表单中,我可以在HTML文件中看到具有NOTNULL

基于,我设置了一个多部分文件管理器,如下所示:

@订单1 公共类SecurityWebAppInitializer 扩展AbstractSecurityWebApplicationInitializer{ @凌驾 SpringSecurityFilterChainServletContext之前的受保护无效servletContext{ insertFiltersservletContext,新的MultipartFilter; } 在文件上传表单中,我可以在HTML文件中看到具有NOTNULL值的CSRF输入,请参见下面的代码

要上载的文件: 姓名: 按这里上传文件! 提交表单后,我得到一个错误

HTTP状态403-在请求参数“\u CSRF”或标头“X-CSRF-Token”上发现无效的CSRF令牌“null”

类型状态报告

在请求参数“\u CSRF”或标头“X-CSRF-Token”上发现消息无效的CSRF令牌“null”

说明已禁止访问指定的资源


这里缺少什么?

更改应用程序的Java配置后,此问题得到解决。以下是这些更改

在AbstractAnnotationConfigDispatchersServletInitializer类中,我在getServletFilters方法中添加了MultipartFilter,并在customizeRegistrationServletRegistration.Dynamic registration方法中使用MultipartConfigElement设置MultipartConfig。最初在WebMVCConfigureAdapter类中定义的MutlipPartConfigElement将被删除。并且类中定义的MultipartResolver保持不变


Java配置是基于应用程序的原始XML配置设置的。基于这种情况,这种方法并不总是有效。

您是否有多部分解析器?是的,我有。为了验证它是否有任何区别,我对MultipartResover进行了注释,得到了相同的原因。我看不出解析器定义之间的关系使用空CSRF令牌。因此,请告诉我。如果没有正确配置的多部分解析程序,Spring Security无法在多部分/表单数据中找到CSRF令牌。您的多部分解析程序bean定义?感谢您的提示。问题已解决。有关详细信息,请参阅我对自己问题的回答。您可能知道哪些更改会产生影响。