Java tutorial
/* * Copyright 2014 Allan Ditzel * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package testapp; import org.springframework.security.web.csrf.CsrfToken; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration; /** * Binds a {@link org.springframework.security.web.csrf.CsrfToken} to the {@link HttpServletResponse} * headers if the Spring {@link org.springframework.security.web.csrf.CsrfFilter} has placed one in the {@link HttpServletRequest}. * * Based on the work found in: <a href="http://stackoverflow.com/questions/20862299/with-spring-security-3-2-0-release-how-can-i-get-the-csrf-token-in-a-page-that">Stack Overflow</a> * * @author Allan Ditzel * @since 1.0 */ public class CsrfTokenResponseHeaderBindingFilter extends OncePerRequestFilter { protected static final String REQUEST_ATTRIBUTE_NAME = "_csrf"; protected static final String RESPONSE_HEADER_NAME = "X-CSRF-HEADER"; protected static final String RESPONSE_PARAM_NAME = "X-CSRF-PARAM"; protected static final String RESPONSE_TOKEN_NAME = "X-CSRF-TOKEN"; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, javax.servlet.FilterChain filterChain) throws ServletException, IOException { CsrfToken token = (CsrfToken) request.getAttribute(REQUEST_ATTRIBUTE_NAME); Enumeration<String> e = request.getAttributeNames(); while (e.hasMoreElements()) { String param = (String) e.nextElement(); System.out.println(param); } if (token != null) { response.setHeader(RESPONSE_HEADER_NAME, token.getHeaderName()); response.setHeader(RESPONSE_PARAM_NAME, token.getParameterName()); response.setHeader(RESPONSE_TOKEN_NAME, token.getToken()); response.addCookie(new Cookie("XSRF-TOKEN", token.getToken())); } filterChain.doFilter(request, response); } }