반응형
springboot 2.x spring security 중복로그인 방지, logout 시 session 삭제 안될때 처리
기본적인 로그인 처리 방법에 대해서는 아래의 link를 참고하세요.
중복 로그인 처리를 하기 위해서는 위의 link에서 구현한 WebSecurityConfig 클래스를 수정해주면 됩니다.
configure 메소드내에 .logout() 을 수정하고 .sessionManagement()를 추가해줍니다.
.and().logout()
.logoutUrl("/logout") /* 로그아웃 url*/
.logoutSuccessUrl("/login") /* 로그아웃 성공시 이동할 url */
.invalidateHttpSession(true) /*로그아웃시 세션 제거*/
.deleteCookies("JSESSIONID") /*쿠키 제거*/
.clearAuthentication(true) /*권한정보 제거*/
.permitAll()
.and().sessionManagement()
.maximumSessions(1) /* session 허용 갯수 */
.expiredUrl("/login") /* session 만료시 이동 페이지*/
.maxSessionsPreventsLogin(true); /* 동일한 사용자 로그인시 x, false 일 경우 기존 사용자 session 종료*/
하지만 invalidateHttpSession(true) 가 정상작동하지 않습니다.
로그아웃시 세션이 삭제되지 않기 때문에 로그인 후 로그아웃을 하고 다시 로그인을 하면 에러페이지로 연결이 됩니다.
이를 해결하기 위해서 WebSecurityConfig 내에 httpSessionEventPublisher 메소드를 추가하여 @Bean 등록을 해줍니다.
@Bean
public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() {
return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher());
}
반응형
'Programing > Spring Security' 카테고리의 다른 글
JWT Access Token, Refresh Token 사용 방식 정리, 장단점, 보안 (2) | 2023.11.22 |
---|---|
Spring Starter security 2.x 3.x 설정 방식 차이 (2) | 2023.11.21 |
spring boot security login error message 한글 설정 (2) | 2019.12.06 |
springboot 2.x + spring security mariadb login 구현 WebSecurityConfigurerAdapter, configAuthentication 사용 (0) | 2019.12.04 |
댓글