1. 程式人生 > >SpringBoot使用Filter過濾器處理是否登錄的過濾時,用response.sendRedirect()轉發報錯

SpringBoot使用Filter過濾器處理是否登錄的過濾時,用response.sendRedirect()轉發報錯

session call epo 後臺 bubuko commit rect bsp ann

1、使用response.sendRedirect("/login")時報錯,控制臺報錯如下:

  Cannot call sendError() after the response has been committed。字面意思是:提交響應之後,無法再調用。

  

我正在做一個springboot的項目,使用Filter過濾器在過濾一些請求url時,因為有些頁面的url請求地址是要登錄之後才能進入的,所以用一個全局的過濾器Fitler,過判斷此url是否有必要放行。當請求此url地址時,從session中取登錄用戶的數據為null,我就要把此次請求重定向到login登錄頁面。轉發login登錄頁面使用reponse的sendRedirect()方法時,出現了上面的報錯。

過濾器代碼:

技術分享圖片

後臺控制臺報錯:

技術分享圖片

重定向登錄頁面失敗:

技術分享圖片

解決辦法:

  經過百度後找到原因:使用response.sendRedirect("/login")後,下面不必再執行任何代碼,因為已經執行重定向到login請求對應的登錄頁面了,修改後代碼如下:(並已重定向成功到login登錄頁面)

技術分享圖片

SpringBoot使用Filter過濾器處理是否登錄的過濾時,用response.sendRedirect()轉發報錯