Java 修改Spring安全筛选器中的响应内容
我想在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,
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,但我得到了错误。。。无论如何,谢谢你!