본문 바로가기

Spring Boot/Security

SecurityFilterChain에 H2 콘솔이 막힐때

h2 로그인 후에 콘솔이 보이지 않는다

십중팔구 Security implements 되어있어서 그런거임

 

이걸 어떻게 해결하는가?

 

자주 해결했지만 자주 까먹어서 적어둔다

 

import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableMethodSecurity(prePostEnabled = true)
public class SecurityConfig {
    @Bean
    @Order(0)
    public SecurityFilterChain h2FilterChain(HttpSecurity http) throws Exception {
        http
                .securityMatcher(PathRequest.toH2Console())
                .authorizeHttpRequests(auth -> auth
                        .requestMatchers(PathRequest.toH2Console()).permitAll()
                        .anyRequest().authenticated())
                .csrf(csrf ->csrf.disable())
                .headers(headers -> headers
                        .frameOptions(frame -> frame.sameOrigin()))
                .formLogin(login -> login
                        .loginPage("/login").permitAll());
        return http.build();
    }
}

 

 

여기서 formLogin은 login에 대한 인증 과정을 거치지 않고 접근할 수 있게끔 해준다

구체적으로는 /login 엔드포인트에 대한 인증 절차를 생략해줌