Я нашел способ, как заставить мою проблему работать. Но это скорее обходной путь, не зная, почему он работает сейчас, но не раньше. Поэтому я напишу здесь ответ, как я его получил, но любые базовые знания или лучшие решения по-прежнему приветствуются.
Основная проблема заключалась в том, что когда я отправлял сообщение для сохранения чего-либо, я получал выход из Spring Security. Поэтому я играл с .logout
в методе Spring Security.
Мой URL для выхода из системы должен выглядеть как /login?logout
. Spring Boot каким-то образом имеет URL по умолчанию /logout
. Но я должен установить logoutUrl вручную, чтобы мои функции сохранения работали. Так что теперь я определяю это как .logoutUrl("/login?logout")
, тогда сохранение в порядке. (Когда я удаляю это и сохраняю что-то, я выхожу из системы!)
Таким образом, моя Spring Security теперь настроена следующим образом:
@Override
public void configure(HttpSecurity http) throws Exception {
enhancer.addRecaptchaSupport(http.formLogin())
.loginPage("/login")
.successHandler(authenticationSuccessHandler)
.and()
.csrf().disable()
.logout().logoutUrl("/login?logout")
.and()
.authorizeRequests()
.antMatchers("/", "/login", "/home", "/registration").permitAll()
.anyRequest().authenticated()
;
}
Я настроил Spring Security ТОЛЬКО для .logoutUrl("/login?logout")
, чтобы мое приложение могло сохранять и не выходить из системы. Когда я хочу выйти из системы, меня перенаправляют на неправильный весенний URL по умолчанию /logout
. Так что теперь я определил в своем LoginController
метод для перенаправления на правильный URL.
@PostMapping("/logout")
public ModelAndView logout() {
return new ModelAndView("redirect:/login?logout");
}
Это все ужасно и запутанно, но я действительно не знаю, что здесь происходит. Пожалуйста, положи свет во тьму. Большое вам спасибо