[점프 투 스프링부트] HttpSecurity에서 formLogin 등 사용법이 달라졌는데, SecurityConfig.java 코드를 어떻게 바꾸어야 할까요?

https://wikidocs.net/162255 에서
@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http.authorizeHttpRequests().requestMatchers(
            new AntPathRequestMatcher("/**")).permitAll()
        .and()
            .csrf().ignoringRequestMatchers(
                    new AntPathRequestMatcher("/h2-console/**"))
        .and()
            .headers()
            .addHeaderWriter(new XFrameOptionsHeaderWriter(
                    XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
        .and()
            .formLogin()
            .loginPage("/user/login")
            .defaultSuccessUrl("/")
        .and()
            .logout()
            .logoutRequestMatcher(new AntPathRequestMatcher("/user/logout"))
            .logoutSuccessUrl("/")
            .invalidateHttpSession(true)
        ;

    return http.build();
}

을 작성하면 formLogin 을 비롯하여 빨간밑줄이 생깁니다.

코드를 어떻게 바꿔야 할까요?

브라이트 680

2023년 7월 14일 10:58 오후

혹시 사용하신 스프링부트 버전을 알수 있을까요? - 박응용님, 2023년 7월 14일 11:32 오후 추천 , 대댓글
@박응용님 네~ 3.1.0 입니다 - 브라이트님, M 2023년 7월 17일 9:14 오전 추천 , 대댓글
@브라이트님 위키독스의 내용을 수정했습니다. SecurityConfig.java 파일이 문서 전체적으로 변경되었으니 확인 부탁드립니다. 기존 코드도 오류는 아니고 람다 함수를 사용하라는 경고 메시지 + deprecated 경고 메시지라 사용이 불가능하지는 않습니다. - 박응용님, 2023년 7월 17일 11:41 오전 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

해당 코드를 다음과 같이 변경해 보세요.
위키독스는 아래의 코드로 업데이트를 진행했습다.

    @Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests
                .requestMatchers(new AntPathRequestMatcher("/**")).permitAll())
            .csrf((csrf) -> csrf
                .ignoringRequestMatchers(new AntPathRequestMatcher("/h2-console/**")))
            .headers((headers) -> headers
                .addHeaderWriter(new XFrameOptionsHeaderWriter(
                    XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)))
            .formLogin((formLogin) -> formLogin
                .loginPage("/user/login")
                .defaultSuccessUrl("/"))
            .logout(logout -> logout
                .logoutRequestMatcher(new AntPathRequestMatcher("/user/logout"))
                .logoutSuccessUrl("/")
                .invalidateHttpSession(true))
        ;
        return http.build();
    }

박응용

2023년 7월 17일 11:42 오전

답변감사합니다~! 이렇게 하면 login 페이지에서 [로그인] 버튼을 눌렀을 때 UserSecurityService 의 loadUserByUsername 가 호출되는 거지요? 호출되지 않고 Whitelabel Error Page 가 뜨면 어떻게 해결해야 할까요? - 브라이트님, M 2023년 7월 17일 2:12 오후 추천 , 대댓글