2010-02-19 84 views
6

我正在爲我的Grails應用程序工作一個自定義的SpringSecurityFilter,我試圖使用公共上傳庫來處理請求。我能夠在過濾器中處理請求,但是一旦它到達我的控制器,就沒有任何值可用。ServletFileUpload.parseRequest()只能在每個請求中調用一次嗎?

只能通過上傳庫處理一次HttpRequest嗎?我猜它正在清理臨時文件。有沒有辦法讓他們保持在一起,以便他們可以在控制器級別再次處理?

我需要詢問表單參數的安全性(由於客戶端我不能將它添加到http頭),但一旦我得到的價值,似乎擦拭請求進一步處理。

+0

喜TGM,我有和你同樣的問題。你找到了解決方案嗎? – 2010-10-25 14:07:32

+0

還沒有。我試圖編寫自定義安全過濾器,但沒有成功。我們添加了用於正常驗證的標頭,並使用會話驗證來解決現在的問題。當我得到時間時,我打算嘗試使用Shiro,或者構建定製的Grails認證過濾器(可以工作)。如果您沒有綁定到SpringSecurity,請嘗試使用Grails過濾器路由。 – ahanson 2010-10-25 17:30:12

回答

4

是的。一個請求只能被解析一次。

我在Apache的FileUpload FAQ頁面看到了這個答案。

問題:爲什麼parseRequest()沒有返回項目?

回答:「這通常發生在請求已被解析或以其他方式處理的情況下。由於輸入流已被該早期進程佔用,因此Commons不再可用於解析上傳文件。」

參考:http://commons.apache.org/fileupload/faq.html

相關問題