首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改Spring安全过滤器中的响应内容

修改Spring安全过滤器中的响应内容
EN

Stack Overflow用户
提问于 2017-08-10 15:37:27
回答 1查看 3.9K关注 0票数 1

我想在Spring Security过滤器中更改响应的内容。假设我想要的是如下所示:

代码语言:javascript
复制
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(),我会得到以下错误:

代码语言:javascript
复制
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上工作。我使用Spring Boot。

来自securityContext.xml的相关部分:

代码语言:javascript
复制
    <security:csrf disabled="true" />
        <security:custom-filter ref="securityFilter" after="FORM_LOGIN_FILTER"/>
    </security:http>

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

任何回应都将不胜感激!

谢谢,小维。

-UPDATE-我忘记提到我需要来自REST服务的响应,因为我想操作它。

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 16:54:40

您可以按照here的说明使用HttpServletResponseWrapper

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45607336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档