1
我遇到了here這個問題,但我不清楚該如何解決它。春季:在閱讀inputStream後如何使用@RequestBody
問題是我有一個AuthenticationProvider必須讀取請求的主體。但是,當我的控制器方法想通過@RequestMapping使用這些數據時,它是空的,因爲Provider已經讀取了inputStream。
有沒有一種方法可以從支持標記/重置的請求中獲取inputReader,這樣我的提供者就可以在認證之後簡單地將流回滾到它的初始狀態?看起來很瘋狂,過濾器的默認行爲是對請求對象的破壞性修改。
聽起來很可能;只是爲了支持我的理解,「包裝請求」意味着擴展ServletRequest,並在我調用chain.doFilter(request,response)時傳遞該請求。 提供者確實只在特定情況下被觸發,但當然,觸發的情況是我需要提供者中的主體和處理者方法的情況。無論如何,謝謝,我會盡快接受答案。 – Ben 2012-08-06 18:32:22
是的,有'HttpServletRequestWrapper'幫助你 - 擴展它,實例化它,傳遞原始請求,並委託所有方法,除了被覆蓋的方法 – Bozho 2012-08-06 19:33:41