当前位置: 首页 > 知识库问答 >
问题:

如何使MultipartFilter与Spring Boot一起使用

那谦
2023-03-14

作为参考,我们有两个选项可以让Multipart与Spring Security一起工作:

  • 在Spring Security之前放置MultipartFilter
  • 在行动中包括CSRF令牌

对于第一种选择,我尝试了以下方法:

  • 创建安全应用程序初始化类:
public class SecurityApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
    @Override
    protected void beforeSpringSecurityFilterChain(ServletContext servletContext) {
        insertFilters(servletContext, new MultipartFilter());
    }
}

>

  • 在application.properties中更改Spring安全过滤器顺序spring.security.filter.order=5

    然后添加FilterRegistrationBean

    @Bean
    @Order(0)
        public FilterRegistrationBean registerMultipartFilter() {
        FilterRegistrationBean reg = new FilterRegistrationBean<>(new MultipartFilter());
        reg.setOrder(1);
        return reg;
    }
    

    不幸的是,它们都不起作用,我试图禁用csrf保护,它按预期工作,那么我的配置有什么问题?

  • 共有1个答案

    翟俊茂
    2023-03-14

    事实证明Spring Boot已经为我们做了很多事情。问题根本不是MultipartFilter。使用Spring Boot时,我们甚至不需要为CSRF保护设置MultipartFilter。

    真正的问题是我的胸腺形式:

    <form method="POST" enctype="multipart/form-data">
                <input type="file" name="file"/>
                <input type="submit" value="Upload"/>
    

    如果没有th: action,Spring引导不会自动为我们插入隐藏的csrf令牌。

    <form th:action="''" method="POST" enctype="multipart/form-data">
                <input type="file" name="file"/>
                <input type="submit" value="Upload"/>
    </form>
    
     类似资料:
    • 我是通过阅读Spring Boot in Action这本书开始学习Spring Boot的,我正在学习这本书中的示例,试图自己运行它们,但我在使用时遇到了问题。 我已经翻遍了这一章,寻找我可能的不匹配。然而,它就是不起作用。 这个项目应该是一个简单的阅读清单。 代码如下: 读者@实体: Jpa接口:

    • 问题内容: 我正在设置信用卡处理程序,需要对CURL使用替代方法。当我使用测试服务器(未调用SSL URL)时,以下代码运行良好,但是现在当我在使用HTTPS的工作服务器上对其进行测试时,它失败,并显示错误消息“无法打开流”。 问题答案: 请尝试以下脚本,以查看您的php脚本是否有https包装器。 输出应该是这样的

    • 问题内容: 我将使用IntelliJ Community Edition的Git版本控制来创建我打算开发的程序的分支。我正在努力使自己适应其功能,并且遇到了障碍。 我遵循网页 http://wiki.jetbrains.net/intellij/Using_Git_Locally上的说明,尽管我按其要求进行操作,但是当我到达Image5时,在Default(默认)下找到了一个空列表。 我认为这可能

    • 问题内容: 我知道这是一个基本问题,但是如果这个问题太愚蠢了,我似乎找不到答案,我很抱歉,但是我们开始: 我应该使用SQL Server(到目前为止没有问题)和Java(喜欢Java,这里也没问题),但是现在:我应该怎么做才能使组合起作用?我得到了: JRE 1.6 和 sqljdbc4.jar …在将sqljdbc4.jar放入我的类路径之前,我已经在其中添加了sqljdbc.jar并通过测试程

    • 问题内容: 我正在尝试使用lodash 以这种方式在指令中使用它: 存在: 但是不起作用,因此,没有任何 重复 。如果我将指令更改为它将起作用。 通过已经包含在之前 。我该如何运作? 问题答案: 我更喜欢在全局范围内引入“ _”并且可以注入以进行测试。

    • 问题内容: 我习惯在普通的log4j上使用。现在,我切换到,无法使附加程序正常工作。 下面的附加程序可以正常工作。但是永远不会创建的日志文件。为什么? 问题答案: 该标记缺少属性。