-
스프링 필터 - 권한 있는 사람만 접근스프링/스프링 시큐리티 2024. 1. 8. 17:31
프로젝트에서 로그인 기능을 만들 때 스프링 시큐리티에 대한 깊이 이해가 없었기 때문에 스프링 시큐리티에 대한 공부와 강의 코드를 정리를 할 것이다.
나머지 코드들은 아래의 링크에서 확인이 가능하다.
깃허브 : chanhee01/spring-security (github.com)
@Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록이 된다. public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf(CsrfConfigurer::disable); http.authorizeHttpRequests(authorize -> authorize .requestMatchers("/user/**").authenticated() .requestMatchers("/manager/**").hasAnyRole("ADMIN", "MANAGER") .requestMatchers("/admin/**").hasAnyRole("ADMIN") .anyRequest().permitAll() ); http.formLogin(formLogin -> formLogin .loginPage("/loginForm")); return http.build(); } }
config 패키지에 있는 SecurityConfig 파일을 만들어준다.
스프링 빈으로 등록된 SecurityFilterChain은 특정 사용자만 입력할 수 있도록 해주는 Configuration이다.
authrozie를 통해서 /user로 시작하는 path는 모두가 접근할 수 있고, /manager, /admin으로 시작하는 path는 각각 ADMIN, MANGER와 ADMIN이라는 Role을 가진 사용자만 접근할 수 있다.
http.formLogin은 권한이 없는 사용자가 접근을 하면 /loginForm 페이지로 다시 보내는 것이다.
anyRequest.permitAll()은 나머지 path는 모두 접근할 수 있다는 것이다.
localhost:8080은 스프링 필터체인에 걸리지 않기 때문에 로그인을 안해도 들어갈 수 있다.
localhost:8080/user로 접근하면 로그인을 안했기 때문에 403 에러가 발생한다.
admin과 manager의 경로로 접근한다고 할 때에도 위와 같은 403 에러가 발생한다.
'스프링 > 스프링 시큐리티' 카테고리의 다른 글
OAuth - 구글 로그인(Authentication 객체가 가지는 2가지 타입) (0) 2024.01.09 OAuth - 구글 로그인(구글 api를 통해 회원 프로필 받아오기) (0) 2024.01.09 시큐리티 권한처리 (0) 2024.01.08 Security Session (0) 2024.01.08 회원가입 시 비밀번호 암호화 (0) 2024.01.08