Spring Security logout насройка
Не могу нормально настроить logout:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/home")
.loginProcessingUrl("/login")
.and()
.logout()
.logoutUrl("/logout")
.deleteCookies("JSESSIONID")
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.and()
.csrf().disable();
}
НО
При переходе по ссылке логаута выдает 404
<a class="btn btn-outline-primary" th:href="@{/logout}">Sign out</a>
(P.s. я так же пробовала не трогать логаут в принципе)
Как вариант так же пробовала сделать попроще:
.logout()
.logoutSuccesUrl("/"); //на этом все
Но в любом виде он выдает 404. Что мне сделать чтобы он просто вышел?
Ответы (1 шт):
Автор решения: am233dmg
→ Ссылка
Можете создать какой нибудь Controller, с маппингом на "/logout":(например)
@GetMapping("/logout")
public String logout(HttpServletRequest request) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null) {
request.getSession().invalidate();
}
return "redirect:/";
}
Если останутся проблемы с "redirect:/", то опять же можете еще создать метод с маппингом "/", и там явно делать return (вашей страницы на удачный logout, либо на редирект на логин, и т.д.)
@GetMapping("/")
public String root() {
return "redirect:/login";
}