Как получить токен csrf при входе в систему? - PullRequest
0 голосов
/ 16 июня 2020

Используя Spring Security, насколько я понимаю, вы получаете токен csrf в GET, а затем включаете его в заголовок для любых последующих запросов POST, PUT, DELETE. Но логин - это ПОЧТА! Итак, как мне получить токен csrf для того, чтобы включить его в заголовок запроса на вход?

Я не хочу отключать csrf для маршрута входа.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вам не нужен csrf при входе в систему. Вы уже авторизовались по имени пользователя и паролю. Вы можете игнорировать этот путь в настройке

0 голосов
/ 16 июня 2020

Если вы используете springboot, то токен csrf автоматически добавляется к ответу CsrfRequestDataValueProcessor. Springboot по умолчанию не добавляет токен csrf для GET, но для POST он будет добавлен по мере изменения состояния. Чтобы использовать токен, например, с jsp:

<c:url var="logoutUrl" value="/logout"/>
<form action="${logoutUrl}"
    method="post">
  <input type="submit"
    value="Log out" />
  <input type="hidden"
    name="${_csrf.parameterName}"
    value="${_csrf.token}"/>
</form>

, когда форма загружена, Springboot будет автоматически вводить значение для токена csrf через постпроцессор. Если вы хотите использовать токен csrf в вызове ajax, вам нужно будет получить токен csrf, проверив DOM и вручную добавив его в свой ajax запрос:

$(function () {
  var token = $("meta[name='_csrf']").attr("content");
  var header = $("meta[name='_csrf_header']").attr("content");
  $(document).ajaxSend(function(e, xhr, options) {
    xhr.setRequestHeader(header, token);
  });
});

Примечание: оба эти примеры взяты из самой документации.

Официальный do c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...