-
스프링 시큐리티 자동로그인 Remember-me 안될 때 해결방법Spring Security 2023. 11. 5. 21:05반응형
일반적인 스프링시큐리티 자동로그인 설정을 하였지만 여러 문제가 발생
대표적인 문제는 브라우저에 remember-me 쿠키가 생성 안되는 문제다.
1. 시큐리티 설정파일에 SecurityService를 @Autowired로 의존성을 주입시킨다.
SecurityConfig.java
@EnableWebSecurity public class SecurityConfig { //스프링에서 제공하는 UserDetails 서비스의 loadUserByUsername 메소드를 구현한 서비스 @Autowired private SecurityService securityService; @Bean public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { .... 생략 // 자동로그인 관리 .rememberMe( rememberMe -> rememberMe .rememberMeParameter("remember-me") //기본 파라미터명은 remember-me .rememberMeCookieName("remember-me") // 브라우저에 저장된 쿠키 이름을 지정합니다. .key("myAppKey") //토큰을 식별하기위한 키를 지정합니다. .tokenValiditySeconds(3600) //default는 14일 .userDetailsService(securityService) //Remember me에서 시스템에 있는 사용자 계정을 조회할때 사용할 클래스 .authenticationSuccessHandler(customAuthenticationSuccessHandler()) ) }
2. UserDetails를 구현한 구현체 UserDetails의 username변수의 getter를 본인이 사용하는 아이디 변수로 지정한다.
//회원 DTO @Data @EqualsAndHashCode(of = "memberId") public class MemberDTO implements UserDetails { private static final long serialVersionUID = 1L; private Long MemberNo; private String memberId; private String memberPwd; ...생략 //이것을 하지 않으면 remember-me 기능을 사용 할 수 없다 //loadUserByUsername메소드에서 사용하는 vo 변수를 username에 getter로 지정 @Override public String getUsername() { return id; } }
UserDetails를 구현한 구현체 에서 (MemberDTO.java) username getter를
loadUserByUsername 메소드에 조회 조건으로 사용하는 변수명으로 지정한다.
이제 어플리케이션 탭에 remember-me 쿠키가 생성됐다!
반응형'Spring Security' 카테고리의 다른 글
스프링 시큐리티 중복로그인 안될 때 해결방법 (0) 2023.11.03 스프링부트 스프링시큐리티 연동하기(4) 커스텀login.jsp/join.jsp/home.jsp (0) 2019.06.29 스프링부트 스프링시큐리티 연동하기(3) WebSecurityConfigurerAdapter/LoginController (0) 2019.06.23 스프링부트 스프링시큐리티 연동하기(2) UserDetailsService/AuthenticationProvider (0) 2019.06.21 스프링부트 스프링시큐리티 연동하기(1) Gradle/Mybatis/Oracle (0) 2019.06.15