Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改Spring安全筛选器中的响应内容_Java_Spring_Spring Boot_Spring Security_Servlet Filters - Fatal编程技术网

Java 修改Spring安全筛选器中的响应内容

Java 修改Spring安全筛选器中的响应内容,java,spring,spring-boot,spring-security,servlet-filters,Java,Spring,Spring Boot,Spring Security,Servlet Filters,我想在Spring安全过滤器中更改响应的内容。假设我想要的是: public class SecurityFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException,

我想在Spring安全过滤器中更改响应的内容。假设我想要的是:

public class SecurityFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        filterChain.doFilter(request, response);

        //response.getWriter().write("a" );
        PrintWriter p = new PrintWriter(response.getOutputStream());
        p.println("Hello");
        p.flush();
        p.close();
    }
}
在过滤器后面驻留着一个REST服务,用于检索字符串列表。 如果我使用getOutputStream()进行写入,那么我可以在客户端上创建字符串列表(而不是字符串“Hello”)。如果使用getWriter(),则会出现以下错误:

2017-08-10 09:10:42,900 ERROR [org.springframework.boot.web.support.ErrorPageFilter] (default task-7) Forwarding to error page from request [/worker/system/urmlprod30] due to exception [UT010006: 
Cannot call getWriter(), getOutputStream() already called]: java.lang.IllegalStateException: UT010006: Cannot call getWriter(), getOutputStream() already called
如何在Spring Security filter中修改响应内容? 顺便说一句,我使用wildfly10,但它也应该适用于Tomcat和Weblogic12c。我用弹簧靴

securityContext.xml中的相关部分:

    <security:csrf disabled="true" />
        <security:custom-filter ref="securityFilter" after="FORM_LOGIN_FILTER"/>
    </security:http>

当我想写我的内容时,我假设已经发送了响应,但是我能做些什么呢

任何回复都将不胜感激

谢谢,V

-----更新------
我忘了提到我需要REST服务的响应,因为我想对其进行操作。

您可以使用所述的
HttpServletResponseWrapper

谢谢您的回复!我忘了提到(…)我需要REST服务的响应,因为我想操作它。请看一下,因为它似乎可以使用。HttpServletResponseWrapper正在工作?那么你的评论放错地方了。也许我们应该更新答案以备将来参考。很好,它正在工作!我记得我试过这个HttpServletResponseWrapper,但我得到了错误。。。无论如何,谢谢你!