Я готовлю проект для студентов в моем классе с помощью Spring Boot (включая Spring Security) + Thymeleaf. Сначала это действительно просто, но у меня возникли проблемы с Chromium / Chrome для страницы входа по умолчанию.
Это моя конфигурация безопасности Spring:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/assets/**", "/", "/login**", "/logout**").permitAll()
.anyRequest().fullyAuthenticated()
.and().formLogin().and().logout().logoutSuccessUrl("/").permitAll();
http.csrf().disable();
http.headers().frameOptions().disable();
}
Как видите Моя целевая страница может быть доступна без аутентификации. Он содержит кнопку входа в систему, как это (я использую Thymeleaf):
<form th:unless="${user}" th:action="@{/login}" method="get">
<input type="submit" value="Login" />
</form>
Я также пытался добавить его без использования тегов Thymeleaf, как это:
<form action="/login" method="get">
<input type="submit" value="Login" />
</form>
Когда я запускаю приложение, я могу получить доступ к целевой странице на Firefox и Chromium в http://localhost: 8080 . Когда я нажимаю кнопку входа в систему, поведение меняется:
Итак, что-то я не так сделал? Могу ли я отформатировать форму, чтобы не отправлять пустой запрос? Могу ли я настроить Spring Security для принятия этого пустого запроса?
Я уже думал о том, чтобы сделать кнопку входа простой ссылкой, но я бы хотел избежать путаницы между формами ссылок и использовать кнопки в формах. Кроме того, мне интересно, есть ли лучшее решение.