У меня есть Spring Boot (1.5.6) с Spring Security (4.2) с приложением ThymeLeaf, которое позволяет пользователю сбросить свой пароль. Все HTML-страницы находятся в src / resources / templates. Основной поток:
- пользователь предоставляет имя пользователя (через resetPage.html)
- учетные данные очищены
- токен генерируется и отправляется по электронной почте на имя пользователя
- пользователь нажимает URL-адрес электронной почты для перенаправления на страницу сброса пароля (changePassword.html), чтобы пользователь мог создать новый пароль
новый пароль отправляется на службу, где он сохраняется и обрабатывается этим кодом:
@ RequestMapping (значение = "/ user / savePassword", метод = RequestMethod.POST)
public String savePassword (языковой стандарт локали, @RequestParam ("имя пользователя") String username,
@RequestParam ("пароль") Строковый пароль, модель) {
// логика идет сюда
...
"вернуть" логин ";
}
На данный момент все работает как нужно. БД обновлена, ошибок в журнале консоли нет.
Пользователю предлагается войти на страницу входа (хотя на панели браузера отображается «savePassword»). Имя пользователя и новый пароль предоставлены, и сервер возвращает 403. В консоли нет ошибки, только признаком того, что что-то пошло не так, является Chrome Developer Tools, возвращающий 403 из POST входа в систему. По умолчанию отображается страница ошибки.
Если я перехожу на домашнюю страницу и затем на страницу входа, я могу аутентифицироваться с новыми измененными учетными данными.
Я не вижу, откуда исходит ошибка или почему. Я попытался запустить через "java -jar" и с отладчиком IDE с включенными комментариями отладки. Никаких ошибок или сообщений вообще не генерируется. Сеанса нет, пользователь не прошел аутентификацию, так почему бы выбрасывать 403 (при условии через Spring Security)?