Java EE 如何断开过滤器中的链和 return 响应

Java EE how to break chain in filter and return the response

如何在 java ee 和 return 响应中打破链过滤器?如果安全验证失败,我不想执行我的休息端点。现在我的代码只是 return 来自函数,但我需要向用户发送正在发生的事情的信息。

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

        HttpServletRequest requ = (HttpServletRequest) request;

        if(!valid){
           return;
        }
        
        chain.doFilter(request, response);

    }

处理此问题的一种方法是使用 sendRedirect.

而不是

        if(!valid){
           return;
        }

您可以使用以下内容在页面上显示自定义消息,例如mypage.action:

        if(!valid){
            log("Unauthorized access request");
            response.sendRedirect("mypage.action");
        } else {
           chain.doFilter(request, response);
        }