본문 바로가기

Dev/Spring Boot

[Spring Security] 스프링시큐리티의 기본 로그인을 사용하지 못했던 문제

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은 무조건 저 링크로 보내는 역할을 수행해서 이게 되는게 아닐까 생각한다.

 

이렇게 삽질하며 또 하나의 지식이 늘었다.