После повышения до Spring Security 3.2.0 и настройки xml токен _csrf не работает.spring security 3.2.0 Значок csrf не работает в шаблоне freemarker
Основы:
- Spring 4.0.1
- Spring Security 3.2.0.
- Freemarker Шаблон Язык
Шаг 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 - шаблон FreeMarker:
<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:
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. Можно ли вообще включить токен csrf в шаблон freemarker? У вас есть предложения или решения?
CSRF Spring Security должно работать нормально с Freemarker так долго, как лексемы CSRF добавляется в модель (это должно быть сделано по умолчанию, поскольку оно установлено как атрибут HttpServletRequest). Используете ли вы Freemarker с Spring MVC (т. Е. FreeMarkerViewResolver)? Вы сконфигурировали блоки для отключения безопасности (т. Е. Security = none)? Если это так, это означает, что токен CSRF не заполняется этими запросами, и вы должны использовать allowAll. –
Я использую Freemarker с Spring MVC и уже настроил атрибут доступа allowAll. Но токен CSRF не заполняется этими запросами. – m3tr4s
Это работает - обновление в вопросе ... – m3tr4s