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
.
Възможно най-накратко опишете:
- Какво очаквате да се случи
- При стартиране на приложението началния екран трябва да може да се зарежда.
- Какво всъщност се случва
- При стартиране няма достъп до приложението и в конзолата има ексепшъни свързани със Spring Security и Thymeleaf.
- Какво опитахте
От потърсенето в интернет нямаше почти никаква информация, а намереното показваше заявка презajax
, която все още не ми е позната.
Стъпки за репродуциране:
- Във resources/templates/fragments/modal.html на формата(
<form>
) трябва да имаth:action="@{/post/new}"
. - csrf трява да е включен (или в случая да не е изключен).
- Приложението се стартира.
- Пуска се бразъра и се прави опит за достъп до
localhost:8080
.
Здрасти! Мисля, че става въпрос за един доста тънък момент. Сетих се за него, тъй като индекс страницата ти е много голяма, пък проблемната форма е най-отдолу.
Наистина е много интересно, прочети това -> luchob/softuni-feb2023#104
Поздрави,
Л.
Здравей отново! Ха! Наистина много интересно, както си написал! Всъщност, когато творим толкова много, единствения начин да избегнем подобен проблем е чрез
.sessionManagement(session -> {
session.sessionCreationPolicy(SessionCreationPolicy.ALWAYS);
})
, така ли? А при създаване на сесията винаги и в самото начало има ли потенциални рискове/проблеми, които може да възникнат?
Инача, както се казва - Works like a charm в момента!
Много благодаря за полезната информация! Силно се симнявам, че щях да стигна до това заключение! :)
единствения начин да избегнем подобен проблем
Не, едва ли е единствения, допускам че можеш да го накараш да я създаде още преди да се изпразни буфера.
Проблеми... ами, ще имаш повече сесии които не винаги ще са необходими. Нещо като да си малко по-дебел от колкото трябва :-)
Поздрави,
Л.