luchob/softuni-sep-2023

Spring Security issue related with th:action in a bootstrap modal

Closed this issue · 3 comments

Здравей, Лъчо,

От известно време се мъча с един буутстрапски модал, който е във <form> със th:action , но не е от значение къде е тага в случая, тъй като той може да бъде и в самия модал.
Линк към проекта

Кратко описание:
Когато стартирам приложението и csrf е включен и опитам да достъпя localhost:8080, в козолата се мятат няколко грешки. Целият стак може да видиш тук.
Това, което открих от грешките е, че когато във <form> тага на модала, намиращ се в fragments/modal.html, има th:action="@{/post/new}" се проявя този проблем с ексепшъните.
Към момента "избягвам" този проблем и приложението работи както трябва, като в секюрити конфигурацията задам .csrf(AbstractHttpConfigurer::disable).
Също важно да се отбележи, че когато csrf е включен, мога да достъпя друга страница, ако просто допиша нещо след localhost:8080, като например localhost:8080/login, което ще ме отведе до логин страницата без проблем, а след това ще мога да навигирам из цялото приложение отново без проблем. Разбира се има изключения - не мога директно да достъпя и /categories/all, /categories/category
Като допълнение в браузъра: Kъм GET заяваката за localhost:8080 статуса става - (failed) new::ERR_INCOMPLETE_CHUNKED_ENCODING.

Възможно най-накратко опишете:

  1. Какво очаквате да се случи
  • При стартиране на приложението началния екран трябва да може да се зарежда.
  1. Какво всъщност се случва
  • При стартиране няма достъп до приложението и в конзолата има ексепшъни свързани със Spring Security и Thymeleaf.
  1. Какво опитахте
    От потърсенето в интернет нямаше почти никаква информация, а намереното показваше заявка през ajax, която все още не ми е позната.

Стъпки за репродуциране:

  1. Във resources/templates/fragments/modal.html на формата(<form>) трябва да има th:action="@{/post/new}".
  2. csrf трява да е включен (или в случая да не е изключен).
  3. Приложението се стартира.
  4. Пуска се бразъра и се прави опит за достъп до localhost:8080.

Здрасти! Мисля, че става въпрос за един доста тънък момент. Сетих се за него, тъй като индекс страницата ти е много голяма, пък проблемната форма е най-отдолу.

Наистина е много интересно, прочети това -> luchob/softuni-feb2023#104

Поздрави,
Л.

Здравей отново! Ха! Наистина много интересно, както си написал! Всъщност, когато творим толкова много, единствения начин да избегнем подобен проблем е чрез

.sessionManagement(session -> {
                    session.sessionCreationPolicy(SessionCreationPolicy.ALWAYS);
                })

, така ли? А при създаване на сесията винаги и в самото начало има ли потенциални рискове/проблеми, които може да възникнат?
Инача, както се казва - Works like a charm в момента!
Много благодаря за полезната информация! Силно се симнявам, че щях да стигна до това заключение! :)

единствения начин да избегнем подобен проблем

Не, едва ли е единствения, допускам че можеш да го накараш да я създаде още преди да се изпразни буфера.
Проблеми... ами, ще имаш повече сесии които не винаги ще са необходими. Нещо като да си малко по-дебел от колкото трябва :-)

Поздрави,
Л.