第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免過濾器后在dispatcherServlet中關(guān)閉輸入流

如何避免過濾器后在dispatcherServlet中關(guān)閉輸入流

慕運(yùn)維8079593 2021-04-05 16:13:35
我需要持久保存有關(guān)為應(yīng)用程序發(fā)送的請求/響應(yīng)的所有信息,例如http狀態(tài),當(dāng)前時間,令牌,請求URI等。這是一個API,資源是:POST本地主機(jī):8080 / v1 / auth / login,其中包含電子郵件和密碼,以請求身份驗證。響應(yīng)是一個JWT令牌。GET localhost:8080 / v1 / auth / rules在請求標(biāo)頭中帶有令牌。響應(yīng)是包含有關(guān)令牌所有者的信息(例如電子郵件和名稱)的正文。為此,我的方法重寫了doDispatch方法:LogDispatcherServlet@Componentpublic class LogDispatcherServlet extends DispatcherServlet {    @Autowired    private LogRepository logRepository;    private static final Logger logger = LoggerFactory.getLogger(LogDispatcherServlet.class);    @Override    protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {        if (!(request instanceof ContentCachingRequestWrapper)) {            request = new ContentCachingRequestWrapper(request);        }        if (!(response instanceof ContentCachingResponseWrapper)) {            response = new ContentCachingResponseWrapper(response);        }        HandlerExecutionChain handler = getHandler(request);        try {            super.doDispatch(request, response);        } finally {            try {                ApiLog log = ApiLog.build(request, response, handler, null);                logRepository.save(log);                updateResponse(response);            } catch (UncheckedIOException e) {                logger.error("UncheckedIOException", e);            } catch (Exception e) {                logger.error("an error in auth", e);            }        }    }  ApiLog.build負(fù)責(zé)獲取有關(guān)請求的示例信息,并且 LogDispatcherServlet對于localhost:8080 / v1 / auth / rules中的GET可以正常工作。我最大的問題是:我正在使用Spring Security生成JWT令牌,因此發(fā)送到/ v1 / auth / login的所有請求都將重定向到過濾器。成功通過身份驗證后,篩選器必須調(diào)用LogDispatcherServlet來持久保存請求和響應(yīng)。有沒有控制器用于/登錄,只是JWTLoginFilter。但這不適用于/ login。當(dāng)ApiLog嘗試在getRequestPayload中獲取請求正文時,我得到一個java.io.IOException:流已關(guān)閉為了避免這種情況我該怎么辦?JWTLoginFilter也需要知道身份驗證請求主體和LogDispatcherServlet,但在tryAuthentication中會調(diào)用request.getInputStream()。還有沒有那么簡單的解決方案?
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號