После некоторых исследований я решил использовать RedirectAttributes
и addFlashAttribute()
для передачи данных на мою страницу входа в систему при выходе из системы.
Поэтому вместо установки logout
в качестве параметра запроса я удалил Springобработка выхода из системы по умолчанию из моей конфигурации безопасности:
http
.authorizeRequests()
.antMatchers("/", "*.css").permitAll()
.antMatchers("/myendpoint").authenticated()
.and()
.formLogin().loginPage("/login").permitAll();
И создал следующую настраиваемую конечную точку выхода из системы в моем контроллере:
@PostMapping("/logout-user")
public String logout(HttpServletRequest request, RedirectAttributes attrs) {
new SecurityContextLogoutHandler().logout(request, null, null);
// this attribute will be received in /login
attrs.addFlashAttribute("logout", true);
return "redirect:/login";
}
Поэтому я отправляю запрос на выход из системы этой конечной точке и проверяю наличиеАтрибут logout
в /login
, для отображения сообщения о выходе при необходимости:
<p th:if="${logout}">Logged out successfully</p>
Кажется, что он работает безупречно.