Я настроил аутентификацию сайта с помощью Spring Security.Проблема в том, что после неудачного входа в систему Spring добавляет ?error
к URL-адресу (что хорошо, потому что я использую его для отображения ошибки).Но затем, когда пользователи успешно входят в систему со второй попытки, они видят ошибку 404 не найдена.Однако этого не произойдет, если пользователи успешно войдут в систему с первой попытки.Как я могу решить эту проблему?
Вот как выглядит страница входа login.jsp
:
<c:choose><c:when test="${param.error != null}">
<div class="error"">Invalid user or password</div>
</c:when></c:choose>
<form action="<c:url value="/login"/>" method="POST" novalidate="" accept-charset="UTF-8">
<label for="username">Login</label>
<input type="text" name="username" id="username" required />
<label for="password">Password</label>
<input type="password" name="password" id="password" required />
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<input type="submit" name="login" value="Login" id="login-submit" />
</form>
SecurityConfig настраивается следующим образом:
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll().and().logout().logoutSuccessUrl("/");
http.logout().logoutUrl("/logout");
}
И ниже мой класс контроллера:
@Controller
@RequestMapping("/")
public class MainController {
@RequestMapping(value = "login")
public String login() {
return "login";
}
}