gpt4 book ai didi

java - 重定向来自过滤器的响应会抛出 IllegalStateException

转载 作者:行者123 更新时间:2023-11-30 11:59:45 25 4
gpt4 key购买 nike

我正在编写一个过滤器来处理所有与身份验证相关的任务。我的过滤器是一个标准的 servlet 过滤器,如下所示

@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

UserSession attribute = (UserSession)request.getSession().getAttribute("user_session_key");
if(attribute!=null && attribute.isValid())
{
//proceed as usual,
chain.doFilter(req, res);
return;
}
else
{
//means the user is not authenticated, so we must redirect him/her to the login page
((HttpServletResponse)res).sendRedirect("loginpage");
return;
}
}

但是当我这样做时,我得到了 Tomcat 的 ResponseFacade 抛出的 IllegalStateException。我如何在过滤器中实现这一点。我在其他 SO 线程中读到,在 TOmcat 中这是一个问题,因为响应对象已经提交。我该如何克服这个问题?

最佳答案

也许您定义了其他过滤器,这些过滤器在过滤器链中的这个过滤器之前执行。那个/这些过滤器可能正在使用响应,因此在执行到达您的过滤器时它不处于重定向的合法状态。

将过滤器声明移到过滤器声明的顶部。

关于java - 重定向来自过滤器的响应会抛出 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com