luchob / softuni-spring-may-2024

Our common projects
14 stars 0 forks source link

Проблем със Spring Config #10

Closed baldzhiyski closed 2 days ago

baldzhiyski commented 5 days ago

Връзка към проекта:

https://github.com/baldzhiyski/Crossfit-Web-App

Кратко описание:

Здравейте , създадох custom страница за Access Denied. Идеята ми е когато някой опита да достъпи по урл страница , за която няма права , да бъде пренасочен към тази страница. Проблема е че винаги ме пренасочва към /login страницата. Създадох custom AccessDeniedHandler и го запизах като биин , но нищо не се получава. Четох в доста сайтове , но не знам защо не става. Ако може да ми дадете някакви насоки защо не проработва ще бъда много благодарен. В последния ми комит са нещата , които съм направил за да постигна това. Главно промените са в SprinSecurityConfig класа .

Също друг малък проблем , който не мога да разреша е , че когато маркирам remember me в лог ин страницата , винаги ме препраща към нея със съобщението invalid username or pass макар че успешно логва usera . На какво би се дължало това ?

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

Опишете възможно най-лесните стъпки, с помощта на които бързо може да се репродуцира проблемът.

baldzhiyski commented 3 days ago

След дълго ровене мисля , че няма проблем с AccessDeniedHandlera . След като се логна и опитам да достъпя ресурс , който е предвиден само за админ например , ме редиректва към страницата. Предполагам тъй като се опитам да достъпя такъв ресурс без изобщо да съм логнат затова не ме редиректва към онази страница , а към лог има. Но все още не мога да оправя remember me функциалността.

luchob commented 2 days ago

Здравей, извинявам се за забавения отговор.

Правилно си се досетил -AccessDeniedHandlera се задейства при грешка 403 - това означава липса на достатъчно пермишъни - например страницата е за роля за ADMIN, а юзъра е обикновен. Може би има объркване с грешка 401 - това е когато не си логнат. Вината е моя, че не съм го обясним достатъчно добре. Малко по-късно ще сваля проекта и щ погледна remember me имплементацията ти.

Поздрави, Л.

luchob commented 2 days ago

Здравей! Току що свалих проекта и го подкарах. Още ли е валиден проблемът?

На логин страницата цъкам remeberme и се логвам.

Screenshot 2024-07-01 at 20 22 43

Копирам заявката като cURL от devtools на браузъра, всичко ми изглежда ОК:

curl 'http://localhost:8080/users/login' \

  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Cookie: JSESSIONID=8D474B76F386A8DBBDA4F2B85C587792' \
  -H 'Origin: http://localhost:8080' \
  -H 'Pragma: no-cache' \
  -H 'Referer: http://localhost:8080/users/login' \
  ....
  --data-raw '_csrf=K5FfD3I7zDxHdgQBkwA6aE5nhKcJ49uS7uK_gx6XeB0kiT4AHPU5bhQOqgVqTmE59i0OUXheqZ8_1b6_j9HetSaiTikV71xi&username=lucho&password=LUCHO123lucho%40%40&rememberme=on'

Сървъра връща rememberme cookie и с 302 ме редиректва към home страницата.

Screenshot 2024-07-01 at 20 23 16

Може ли да опиташ да се увериш че си сетнал някакви стойности на rememberme паролата през enviroment variables (application.yaml), а също да изтриеш кукитата от локалната машина (или може да пробваш с guest/private browser). За съжаление не мога да репродуцирам при мен проблема. Ще затворя, но ако все още не работи ми пиши тук и ще го борим някак.

Поздрави, Л.