【发布时间】:2016-06-04 00:24:45
【问题描述】:
我正在使用以下代码进行注销:
public class LogoutHandler extends SimpleUrlLogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
if(!response.isCommitted()) {
String targetURL = "myUrl";
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
response.getWriter().write(target);
response.getWriter().flush();
response.getWriter().close();
getRedirectStrategy().sendRedirect(request, response, targetURL);
}
}
}
但在调用 /logout WS 时出现以下异常:
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:494)
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)
at org.springframework.security.web.firewall.FirewalledResponse.sendRedirect(FirewalledResponse.java:26)
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:138)
【问题讨论】:
-
刷新响应后,您根本无法执行
sendRedirect -
如何更正我的代码?
-
那么我们应该如何使用
onLogoutSuccess?没有重定向?
标签: java spring web-services spring-security