SecurityConfig
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
...
.and().logout()
.logoutUrl("/api/logout") // POST 요청으로 logout을 요청할 URL
.logoutSuccessUrl("/auth/logout/success") // 로그아웃 성공시 후처리하는 api
.invalidateHttpSession(true) // 세션 무효화
.deleteCookies("JSESSIONID") // 쿠키 삭제
...
return http.build();
}
}
후처리 API
@Controller
@RequestMapping("/auth")
public class SecurityController {
@GetMapping("/logout/success")
public ResponseEntity successLogout(){
return new ResponseEntity(
new Response(200, "정상적으로 로그아웃 되었습니다."), HttpStatus.OK);
}
}