2016-12-16 15 views
0

Это сценарий:Ожидаемый CSRF токен не найден Spring Security

Я использую Spring Security 4.0.1, которая позволила CSRF по умолчанию, и все не работает нормально до вчерашнего дня.

Вчера я добавил Spring Security Tags, и логин (и другие формы работали нормально), но специальная форма перестала работать.

Эта форма многочастная потому добавления двух файлов, эта форма имеет параметр CSRF, но сервер возвращает:

HTTP Status 403 - ожидаемый CSRF маркера не найден. Прошла ли ваша сессия ?

В основном это форма:

<form id="documentForm" class="card-panel" method="POST" enctype="multipart/form-data" action="<c:url value="/documents/signDocument?${_csrf.parameterName}=${_csrf.token}"/>"> 
    <input type="file" name="document"/> 
    <input type="text" name="signer"/> 
</form> 

Конечно, это совершенно отсечка версия формы, но обратите внимание на параметр CSRF посылается через URL действия. И да, я попытался поместить параметр CSRF в скрытый ввод с тем же результатом.

На стороне записки, эта форма может быть доступна в качестве анонимного пользователя

+0

Чтобы не помещать маркер в URL-адрес, вы можете добавить токен в метатеги в заголовке HTML, а затем добавить его в заголовок запроса XHR, как описано здесь http://stackoverflow.com/questions/21514074/ весна-CSRF-токен-делает-не-работа-при-The-запрос, чтобы быть посланным-это-многочастному-Requ/43122490 # 43122490 –

ответ

0

Исключения вы столкнулись брошено в

org.springframework.security.web.csrf.CsrfFilter#doFilterInternal 

Места точки останова, и вы можете увидеть ожидаемый маркер CSRF для текущий сеанс, а также токен, полученный от параметра заголовка или запроса.

Эта ошибка может также произойти, если правильный сеанс не найден, или файл cookie сеанса является неправильным, поэтому вам также может потребоваться проверить его.