Перенаправление страницы входа в Spring-security не работает в Chromium / Chrome - PullRequest
0 голосов
/ 22 апреля 2020

Я готовлю проект для студентов в моем классе с помощью 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 . Когда я нажимаю кнопку входа в систему, поведение меняется:

  • Firefox отправляет GET на «http://localhost: 8080 / login », и открывается страница входа в Spring Security.
  • Chromium / Chrome отправляет GET на "http://localhost: 8080 / login ?" и я получаю 404. Если я уберу знак вопроса, появится страница входа.

Итак, что-то я не так сделал? Могу ли я отформатировать форму, чтобы не отправлять пустой запрос? Могу ли я настроить Spring Security для принятия этого пустого запроса?

Я уже думал о том, чтобы сделать кнопку входа простой ссылкой, но я бы хотел избежать путаницы между формами ссылок и использовать кнопки в формах. Кроме того, мне интересно, есть ли лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...