Closed Stefan-Markov closed 3 years ago
Здравей!
Насоките за създаване на линкове с thymeleaf, важат също и за логин формата. Първата очевидна грешка е ето тук:
<form th:object="${userLoginBindingModel}" action="/user/login" method="POST">
Трябва да е:
<form th:object="${userLoginBindingModel}" th:action="@{/user/login}" method="POST">
Ако си спомняш, когато говорихме за CSRF споменах, че това нещо инсъртва един "CSRF" токън, без който защитата срещу CSRF сработва и няма да те пусне да се логнеш.
След това забелещи как създаваш принципала:
return new org.springframework.security.core.userdetails.User(
user.getEmail(),
user.getPassword() != null ? user.getPassword() : "",
authorities);
Тук слагаш имейл вместо username :-) Затова споменах, че ако аз го правя това ще махна username и ще оставя само email. И без това логин с Facebook, например става по лесно така.
Тези също не ти трябват:
@PreAuthorize("isAnonymous()")
Давай така и да видим дали ще успееш да се логнеш :-)
Поздрави, Л.
Здравейте, да сега мога да се логна или да направя logout. Но нямам никакви грешки ако имам грешни credentials или послетата са ми празни. Докато конзолата се пръска от грешки, но програмата не спира.
Привет!
Този път ексепшъна е следния:
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "username" (template: "/login" - line 35, col 51)
Това иде оттук, в login template:
<input th:field="*{username}" th:value="*{username}" class="input-style" name="username" type="text"
id="inputUsername"
placeholder="Enter username">
Което пък иде оттук:
<form th:object="${userLoginBindingModel}"
Проблемът е, че ти нямаш binding model при логин. Къде работиш с него? :-) При логин ендпойнта е на spring security и там просто няма байндинг модели, а имплементирането на къстъм валидации не е никак проста задача. Добрата новина е, че в повечето случаи просто не е и нужно.
За твоя проект ми се струва удачно:
Виж в музикалния workshop за пример.
Поздрави, Л.
Добро утро. Правя странни асоциации с практики от предходния модул и ме бъркат явно.Логина работи сега без проблем. Може ли насока сега как да си взема инфромацията като име на логнатия user. Преди го правехме в current user и post mapping и там си сетвам. Сега не се ориентирам от къде да си взема името на логнатия user и да го сложа в home page за поздрав.
Здравейте, благодаря за насоките за проблема при css. Прегледах последното видео и опитвам да направя login и logout. Имам успех с валидациите при регистрация и всичко е добре до тук. После някак никакъв резултат и не може да се логна. Ако не закоментирам " SecurityContextHolder.getContext().setAuthentication(authentication);" всичко гърми, но пък се логва user-а. Иначе нямам нито съобщения за грешка, нито се логва. Нещо много сериозно съм оплескал.
Това е проекта: https://github.com/StefanFMarkov/projectdefence