작성
·
468
·
수정됨
7
@Configuration
@EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/user/**").authenticated() // /user라는 url로 들어오면 인증이 필요하다.
.requestMatchers("/manager/**").hasAnyRole("MANAGER", "ADMIN") // manager으로 들어오는 MANAGER 인증 또는 ADMIN인증이 필요하다는 뜻이다.
.requestMatchers("/admin/**").hasRole("ADMIN") // //admin으로 들어오면 ADMIN권한이 있는 사람만 들어올 수 있음
.anyRequest().permitAll() // 그리고 나머지 url은 전부 권한을 허용해준다.
);
http.formLogin(form -> form
.loginPage("/login"));
return http.build();
}
}
현재 버전 업데이트가 되면서 많이 바꿔어서 참고할 분들은 참고 해주시면 될꺼 같습니다!
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
한상희님의 자바 시큐리티 Config
예제는 스프링 부트와 스프링 시큐리티를 사용하여 애플리케이션의 보안 설정을 구성하는 방법을 보여줍니다. 스프링 부트 v3.1.5
문서에 따르면, SecurityFilterChain
빈을 정의하여 애플리케이션의 보안 설정을 직접 구성할 수 있습니다. 이를 통해 기본 웹앱 보안 설정을 대체할 수 있으며, HTTP 요청에 대한 보안 요구 사항을 세밀하게 조정할 수 있습니다.
예제 코드에서는 CSRF 보호를 비활성화하고, URL 기반의 보안 규칙을 설정하며, formLogin
을 사용한 로그인 페이지 구성 방법을 설명합니다. /user/**
경로로의 접근은 인증된 사용자만 허용되며, /manager/**
경로는 MANAGER
또는 ADMIN
역할을 가진 사용자에게만 접근이 허용됩니다. /admin/**
경로는 ADMIN
역할을 가진 사용자에게만 접근이 가능합니다. 그 외의 모든 요청은 인증 없이 접근할 수 있도록 설정되었습니다.
스프링 부트의 보안 관련 자세한 설정 방법과 옵션은 공식 문서를 참조하는 것이 좋습니다. 자세한 내용은 Spring Boot Reference Documentation에서 확인할 수 있습니다.