login 설정
1. logout Configuration 설정 (구버전)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain fileterChain(HttpSecurity http) throws Exception {
http
.logout()
.logoutUrl("/logout") // default 는 "logout"이다. spring security 의 logout 처리는 post 방식으로 처리된다.
.logoutSuccessUrl("/login") // 로그아웃 성공 시 이동할 페이지만 알려줌
.addLogoutHandler(new LogoutHandler() {
@Override
public void logout(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) {
HttpSession session = request.getSession();
session.invalidate(); //세션 무효화
}
})
.logoutSuccessHandler(new LogoutSuccessHandler() {
//.logoutSuccessUrl()과 비슷하다. 다만 .logoutSuccessHandler()이 좀 더 다채롭게 구현이 가능하다.
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
response.sendRedirect("/login");
}
})
.deleteCookies("remember-me") //서버에서 만든 쿠키를 삭제
;
return http.build();
}
}
2. logout Configuration 설정 (신버전 - 람다식 사용)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain fileterChain(HttpSecurity http) throws Exception {
http
.logout(form ->
form
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.addLogoutHandler((request, response, authentication) -> {
HttpSession session = request.getSession();
session.invalidate();
})
.logoutSuccessHandler((request, response, authentication) ->
response.sendRedirect("/login"))
.deleteCookies("remember-me")
);
return http.build();
}
}
3. 설정 후 출력결과
Comments