Обработчик сбоев аутентификации при загрузке Spring - Пользовательский без дополнительных URL-адресов или параметров запроса - PullRequest
0 голосов
/ 10 июля 2020

Моя текущая реализация Spring Boot Login выглядит следующим образом:

login. html:

<div class="error-message m-l-4" th:if="${errorMessage}" th:text="${errorMessage}"></div>

WebSecurityConfigurerAdapter - метод настройки:

formLogin().failureUrl("/login-error")

RequestMapper :

@RequestMapping("/")
public class Root {
    @GetMapping("login")
    public ModelAndView getLoginView(ModelMap mav) {    
        return new ModelAndView("login", mav);
    }
    
    @GetMapping("login-error")
    public RedirectView setErrorMessage(RedirectAttributes attributes) {
        attributes.addFlashAttribute("errorMessage", "Username or Password is invalid");
        return new RedirectView("login");
    }
}

Вышеуказанное работает отлично, когда пользователь вводит недопустимые учетные данные, ошибка отображается на HTML. Однако есть ли способ достичь sh того же результата, но избавиться от лишнего каталога / ошибки входа? Я не хочу, чтобы он был доступен, несмотря на перенаправление на страницу входа с ошибкой. Я попытался перевести пользовательский AuthenticationFailureHandler (.failureHandler (new CustomAuthenticationFailureHandler ())), чтобы получить тот же эффект, но я могу вернуть только JSON, а не HTML. По сути, мне нужно точно такое же поведение, как и на странице входа в Instagram.

См. Страницы в порядке и при обновлении sh обратно на точную страницу как страницу 1: Page 1 Page 2 - Press Login Page 3 - Error Shown Страница 4 - Нажмите Refre sh

...