【问题标题】:Grails 3 multipart request with Spring Security带有 Spring Security 的 Grails 3 多部分请求
【发布时间】:2017-05-03 23:44:20
【问题描述】:

我有一个 Grails 3 REST 应用程序,调用保存上传的文件。

def saveAll() {
    request.fileNames.each { filename ->
        if(!filename.empty){
            File file = params[filename];
            file.transferTo(grailsApplication.config.filesPath)
        }
    }
}

问题是代码可以正常工作,除非我使用 Spring Security 保护控件,然后参数为空,我找不到替代方法

(我知道 Spring security 有一个请求包装器,发现有几个有这个问题但仍然没有找到明确的解决方案)

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    解决方案是在函数中实际添加@Transactional。我不知道为什么会这样。但它是这样工作的

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 request.getFiles() 而不是 request.getFileNames()。我有一个使用 springSecurityRest 插件的应用程序,并使用注释进行保护,部分工作代码与此类似。

      if(request instanceof  MultipartHttpServletRequest){
              request.getFiles().each { MultipartFile file ->
                  // ... the code to transfer the file goes here 
              }
          }
      

      我已经试验过了,在从 RestfulController 继承的控制器中,似乎请求的数据一旦绑定就会被刷新。这可能是您的参数似乎为空的原因。不过,我不知道它是否适用于此,或者我的假设是否正确。

      【讨论】:

      • 问题是当安全request instanceof MultipartHttpServletRequest返回false
      猜你喜欢
      • 2013-02-10
      • 2014-09-30
      • 2014-02-15
      • 2014-02-19
      • 2023-03-24
      • 2019-12-26
      • 2017-01-04
      • 2012-09-24
      相关资源
      最近更新 更多