스프링 보안 3.2.0으로 업그레이드하고 xml을 구성한 후 _csrf 토큰이 작동하지 않습니다.스프링 보안 3.2.0 freemarker 템플릿에서 csrf 토큰이 작동하지 않습니다.
기본 :
- 봄 4.0.1
- 봄 보안 3.2.0.
- 프리 마커 템플릿 언어
1 단계 - 스프링 보안 XML 구성 :
<!-- enable csrf protection via csrf-element -->
<sec:http>
<!-- -->
<sec:csrf token-repository-ref="csrfTokenRepository" />
</sec:http>
<!-- rewrite headerName -->
<bean id="csrfTokenRepository" class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository">
<property name="headerName" value="X-SECURITY" />
</bean>
2 단계 - 프리 마커 템플릿 :
<form accept-charset="UTF-8" action="/portal" method="POST" name="formAddItemToCart">
<!-- ... -->
<!-- inlcude csrf token -->
<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
</form>
3 단계 - 렌더링 된 출력 :
<form accept-charset="UTF-8" action="/portal" method="POST" name="formAddItemToCart">
<!-- ... -->
<input type="hidden" name="" value=""/>
</form>
4 단계 - 프리 마커 템플릿 오류 :
FreeMarker template error:
The following has evaluated to null or missing:
==> _csrf [in template "cart.ftl" at line 28, column 21]
참조 : http://docs.spring.io/spring-security/site/docs/3.2.0.RELEASE/reference/htmlsingle/#csrf
는 현재 내가 전체 응용 프로그램을 디버깅하고있다.
정확히 어디서 문제가 있는지 알 수는 없지만 csrf가 freemarker와 작동하지 않는 것 같습니다. 일반적으로 freemarker 템플릿에 csrf 토큰을 포함시킬 수 있습니까? 제안이나 해결책이 있습니까?
모델에 추가됩니다 (HttpServletRequest 속성으로 설정되어 있으므로 기본적으로이 작업을 수행해야합니다). Freemarker를 Spring MVC (즉, FreeMarkerViewResolver)와 함께 사용하고 있습니까? 블록을 보안을 사용하지 않도록 설정 했습니까 (예 : security = none)? 그렇다면 CSRF 토큰이 해당 요청에 채워지지 않으므로 permitAll을 사용해야합니다. –
Im Freemarker를 Spring MVC와 함께 사용하고 있으며 이미 permitAll에 대한 액세스 속성을 구성했습니다. 그러나 CSRF 토큰은 이러한 요청에 채워지지 않습니다. – m3tr4s
작동 중 - 질문에서 업데이트 ... – m3tr4s