2014-02-06 2 views
3

Я ссылаюсь на следующую документацию по безопасности Spring около csrf configuration.Переименование заголовка маркера CSRF с помощью Spring Security

кажется имя заголовка по умолчанию для маркеров CSRF является: X-CSRF-TOKEN

Как объяснен в документации:

<meta name="_csrf" content="${_csrf.token}"/> 
<!-- default header name is X-CSRF-TOKEN --> 
<meta name="_csrf_header" content="${_csrf.headerName}"/> 

кажется AngularJs использует следующее имя заголовка: X-XSRF-TOKEN

  1. Как изменить название заголовка на Сторона безопасности весны?
  2. Это лучший способ для продолжения?
  3. Будет ли это влиять на защиту CSRF на классическую форму, отличную от ajax, и, в частности, имя параметра XSRF?
+0

Вам нужно было сделать что-нибудь еще в Angular, чтобы заставить его работать? Я использую Spring-security 3.2 с приведенной выше конфигурацией и все еще получаю «Ожидаемый токен CSRF не найден. Срок действия вашей сессии» –

ответ

4

Вы можете создать свой собственный экземпляр боб HttpSessionCsrfTokenRepository, установите свойство headerName этого экземпляра и передать ссылку на этот экземпляр к конфигурации CSRF, как <security:csrf token-repository-ref="..." />. Например,

<bean id="csrfTokenRepository" class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository"> 
    <property name="headerName" value="X-SECURITY" /> 
</bean> 

<security:http> 
    <security:csrf token-repository-ref="csrfTokenRepository" /> 
</security:http> 
+0

Я использую Spring-security 3.2 на основе конфигурации Java, есть способ, которым я могу установитьHeaderName в HttpSessionCsrfTokenRepository. На самом деле я создал свой собственный CustomSessionCsrfTokenRepository, он все равно не работает. –

+0

У вас есть новый вопрос, на который я могу ответить. – manish

+0

Вы можете ответить здесь, http://stackoverflow.com/questions/24022967/using-angularjs-with-springsecurity3-2-for-csrf. Я закончил создание CustomCsrfTokenRepository, чтобы переопределить имя заголовка. –

Смежные вопросы