SpringBoot使用Filter过滤器处理是否登录的过滤时,用response.sendRedirect()转发报错

1、使用response.sendRedirect("/login")时报错,控制台报错如下:

  Cannot call sendError() after the response has been committed。字面意思是:提交响应之后,无法再调用。

其实就是response调用了两次

  

我正在做一个springboot的项目,使用Filter过滤器在过滤一些请求url时,因为有些页面的url请求地址是要登录之后才能进入的,所以用一个全局的过滤器Fitler,过判断此url是否有必要放行。当请求此url地址时,从session中取登录用户的数据为null,我就要把此次请求重定向到login登录页面。转发login登录页面使用reponse的sendRedirect()方法时,出现了上面的报错。

过滤器代码:

后台控制台报错:

重定向登录页面失败:

解决办法:

  经过百度后找到原因:使用response.sendRedirect("/login")后,下面不必再执行任何代码,因为已经执行重定向到login请求对应的登录页面了,修改后代码如下:(并已重定向成功到login登录页面)

 

原文地址:https://www.cnblogs.com/spll/p/10294267.html