Nano Hash - криптовалюты, майнинг, программирование

Spring Boot - защита Spring Security CSRF не вводит токен на страницу входа

Я следую этому руководству, но они отключили защиту csrf.

Итак, я удалил код csrf().disabled(), но тогда код не вводится, и я не могу правильно войти в систему из-за:

DEBUG 5276 --- [nio-8080-exec-6] o.s.security.web.csrf.CsrfFilter: Invalid CSRF token found for http://localhost:8080/admin_login.

Я думаю, что чего-то не хватает из-за двойной конфигурации (логин пользователя и администратора).

Я уже пробовал:

  • Добавление <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> вручную

  • Добавление th:action к тегу формы.

  • Добавление <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" /> с тегами th. Это выдает: Exception evaluating SpringEL expression: "_csrf.parameterName".

Любые идеи?


Ответы:


1

Поместите эти метатеги на свою страницу входа

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

Затем включите токен CSRF в форму входа в качестве скрытого параметра вручную в код (поскольку вы используете Thymeleaf, вам нужно использовать th:content вместо content:):

<input
  type="hidden"
  th:name="${_csrf.parameterName}"
  th:value="${_csrf.token}" />
15.02.2018
  • Пробовал и не получилось. Выдает исключение. Я обновил пост с этим случаем. 15.02.2018
  • @FernandoFradegrada Вы читали Справочник по безопасности Spring. Этот способ должен работать. 15.02.2018
  • @FernandoFradegrada Добавьте пространство имен thymeleaf-extras-springsecurity и его зависимость в свой проект и повторите попытку. В теге html добавьте: xmlns:sec=thymeleaf.org/thymeleaf-extras-springsecurity4 В файле pom.xml (если вы используете Maven) вам нужно добавить зависимость: thymeleaf-extras-springsecurity4. 19.02.2018

  • 2

    Вчера я использовал указанный вами материал и столкнулся с похожей проблемой. И мне удалось решить эту проблему. Причина, по которой тимелеаф не вводит код csrf ниже: Ваша страница входа и обработка URL-адреса в соответствии со статьей: https://www.baeldung.com/spring-security-two-login-pages

    .loginPage("/loginAdmin")
    .loginProcessingUrl("/admin_login")
    

    Но для antMatchers() правил нет. Я решил эту проблему следующим образом: для App2ConfigurationAdapter добавьте эту строку кода:

    .antMatchers("/loginAdmin", "/admin_login").permitAll()
    

    Теперь тимелеаф правильно вводит код csrf в форму.

    31.01.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..