使用Spring Security的Grails 3多部分请求

时间:2017-04-30 09:35:45

标签: grails spring-security

我有一个Grails 3休息应用程序,呼叫保存上传的文件。

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

问题是代码工作正常,除非我使用Spring Security保护控件,然后params为空,我找不到其他选择

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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