개발/Spring Boot
[Spring Security] 스프링시큐리티의 기본 로그인을 사용하지 못했던 문제
홀든콜필드
2024. 10. 27. 03:10
728x90
스프링 시큐리티는 기본적으로 /login 에서 기본 로그인 화면을 지원한다. 그래서 난 SecurityFilterChain을 구성할 때
http.httpBasic(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)
.userDetailsService(userDetailService)
.authorizeHttpRequests(auth -> auth
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/login").permitAll() // 단순화된 매처로 수정
.requestMatchers("/auth/**").permitAll()
.anyRequest().authenticated()
)
이렇게 Http를 구성했는데 계속 /login 창으로 넘어가지 못하는 문제가 발생했다. 그래서 몇시간을 고생했는데 formLogin에서 제공하는 loginProcessingUrl을 login 링크로 지정해주니 정상적으로 확인되었다.
http.httpBasic(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)
.userDetailsService(userDetailService)
.authorizeHttpRequests(auth -> auth
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/login").permitAll() // 단순화된 매처로 수정
.requestMatchers("/auth/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginProcessingUrl("/login")
.defaultSuccessUrl("/")
.permitAll()
);
아무래도 여기서 허용해서 나올 수 있는 링크는 현재 컨트롤러단에서 구현되어 있어야 하는 것 같다. 위 loginProcessingUrl은 무조건 저 링크로 보내는 역할을 수행해서 이게 되는게 아닐까 생각한다.
이렇게 삽질하며 또 하나의 지식이 늘었다.