Встроенный метод для получения токена csrf

Я включил csrf в Spring Security 3.2.9.РЕЛИЗ. Я нашел в Интернете следующие варианты получения токена csrf:

включить токен - это заголовки ответов http

ИЛИ

вручную создать GET API, чтобы получить его

@RequestMapping(method = RequestMethod.GET, value = "/csrf")
    public @ResponseBody String retrieveCsrfToken(HttpServletRequest request) throws Exception {
        if (null != request.getSession(false)) {
            System.out.println("session exist ");
        }
        CsrfToken token = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
        return token.getToken();
    }

Нет ли встроенного механизма для его извлечения?
Каков предполагаемый способ получения токена по умолчанию?

Все остальные функции csrf уже закодированы/встроены (к весне), за исключением этой части того, как получить токен. Я чувствую, что что-то упускаю.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
184
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Модуль spring-security-web позволяет получить доступ к токену CSRF в представлении, ссылаясь на параметр $_csrf. В соответствии с 6.4.3. Включите документы токена CSRF это можно сделать как часть отправки формы:

<input type = "hidden" name = "${_csrf.parameterName}" value = "${_csrf.token}"/>

или сохранить в теге <meta>:

<meta name = "_csrf" content = "${_csrf.token}"/>
<meta name = "_csrf_header" content = "${_csrf.headerName}"/>

для дальнейшего чтения через JavaScript:

$(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);
  });
});

Другие вопросы по теме