luchob / softuni-music-db

Our workshop project for the course Spring Advanced 2021
3 stars 11 forks source link

Problem with not working exception #6

Closed Stefan-Markov closed 3 years ago

Stefan-Markov commented 3 years ago

Добър вечер. Проблема този път е следния. Искам да прихвана грешките, който дава и да изкарам мой html шаблони. Кода е както в видеото и не става. Поне вече когато даден user няма права за дадена страница не вхърля чаршафа с грешки в сайта. https://github.com/StefanFMarkov/Motorious

luchob commented 3 years ago

Добро утро!

Първо с ужас установявам, че си си комитнал cloudinary secret-a в github :-) Въпрос на време е най-креативен човек да качи нещо там. Можеш да направиш disable на този сикрет и да го разкараш от github :-)

След това... мда, това е поведението на spring by default. Ако нямаш права за някоя страница директно заминаваш на логин страницата и няма никакви чаршафи, просто защото spring security няма да те допусне да изпълниш контролера, който стои зад тази страница. Това като цяло ми изглежда напълно ок и правилно като поведение. Ако искаш нещо друго обаче, става малко по-сложничко :-) Например къстъм unatuhenticated страница или нещо подобно.

Тогава би могъл да опиташ с твоя имплементация на AuthenticationEntryPoint, която да регистрираш по подобен начин:

and()
            .exceptionHandling()
            .authenticationEntryPoint(...).

Пример е самия AuthenticationEntryPoint на спринг който те редиректва към логин страницата :-) Той се нарича LoginUrlAuthenticationEntryPointи може да му разгледаш сорса, ама както виждаш е доста коравичко.

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

Поздрави, Л. :-)

Stefan-Markov commented 3 years ago

Здравейте, приложих CustomAccessDeniedHandler със Bean - accessDeniedHandler() и сега вадя моя си html страница и вече няма нито версия на tomcat, нито грешки във браузара. Мисля, че е добро решение ? До ключа за cloudinary, много добре разбрах насоките да не качвам ключа :Д, но когато опитам да направя secret key,cloudinary server не го приема и дава грешка, затова направих и default pic за такива ситуации. Доста странно, но ще го мъча пак за да не седи ключа в github.

luchob commented 3 years ago

Привет! Това с accessDeniedHandler e супер, просто например ако не си логнат и отидеш, например на http://localhost:8080/kfjhkfjshkjfdshk няма да получиш 404, а ще отидеш на логин страницата. Което е съвсем ОК според мен. Да, не трябва да има никакви видими от user-a грешки, защото примера с equifax е доста показателен :-)

Иначе ми е интересно за cloudinary, нов ключ може да генериаш от account > settings > security, най-отдолу:

Screenshot 2021-03-14 at 17 32 17

Достъпен е и от първата страница, може да го копнеш в клипборда:

Screenshot 2021-03-14 at 17 36 48

Най-удачно е да си сетнеш сикрета в environment variable. Онзи ден, онзи образ на секюрити курса ни показваше някакви тулчета дето обикалят гитхъб и търсят разни сикрети като твоя :-) Рано или късно ще те намерят, по-скоро ще е рано, обаче.

Поздрави!