Spring boot 에서 configure란 "스프링이 돌아가는 설정을 관리하는 객체" 라고한다.
다시 말하면 스프링이 기본으로 돌아가는 기본 설정을 configure 어노테이션을 붙혀 우리가 관리할 수 있다는 말이다.
이는 Bean과는 조금 다른 의미인데, Bean은 Ioc (제어의 역전)에 개발자가 직접 클래스를 삽입하여 사용할 수 있는 것이라면 configure는 아에 규칙을 바꿔버릴 수 있다.
스프링부트에서 로그인 기능을 위해
WebSecurityConfigurerAdapter
@EnableWebSecurity
두가지를 사용할 수 있다. 먼저 아래 어노테이션은 시큐리티 필터가 스프링 필터 체인에 등록이된다. 이를 통해 기본적인 스프링 시큐리티 설정이 실행되고 위의 클래스를 상속받으면 여러가지 스프링 시큐리티의 기능을 사용할 수 있다.
예를들어 , 기본 페이지는 모두가 볼 수 있지만 게시글을 보려면 로그인해야하는 경우를 간단히 표현할 수 있다.
먼저 위의 방식없이 스프링시큐리티만 gradle에 추가해두었다면
메인 페이지에 이렇게 바로 로그인 창이 나타난다.
@Configuration
@EnableWebSecurity // 시큐리티 필터가 스프링 필터 체인에 등록이 됨.
public class SecurityConfig extends WebSecurityConfigurerAdapter { // 이것이 필터. 이것이 기본 필터 체인에 등록이 됨.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/CoreMember/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')")
.antMatchers("/CoreMember/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')")
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/login");
}
}
이렇게 configure를 활성화하고 코드를 적는다. 위 코드는 /user/~ 라는 주소는 로그인 되어있으면 접근을 허락하는 것이고 코/coremember/~ 라고 들어오면 hasRole 즉 권한 까지 체크하는 것이다. 일반 유저인지, 아닌지 그리고 만약 접근을 거부당했다면 로그인 페이지로 이동된다. 다시 서버를 실행하면 다음과 같이 작동한다.
메인 페이지에 TEST를 출력하게 해놓았는데 이번에는 로그인을 요구하지 않는다. 여기서 만약 /user/ 라고 적어보면 자동으로 로그인 페이지로 이동한다.
여기서 주의해야할 것이 있다. /login 은 스프링시큐리티에서 자체적으로 사용하던 페이지이다. 즉 원래는 맨 위 로그인 창으로 이동해야한다. 그러나 우리가 스프링 필터체인에 등록했기 때문에 개발자가 등록한 설정으로 돌아가게 된 것이다.
'Dev > Spring Boot' 카테고리의 다른 글
Spring Security - 로그인 처리 과정 (0) | 2023.07.30 |
---|---|
우분투에서 MySql 실행법 (0) | 2023.07.30 |
Spring Boot - 카카오 로그인 인가 받기 (0) | 2023.02.20 |
Spring Boot - 로그인 정보 변경, 세션 변경 (0) | 2023.02.20 |
Spring Boot - 스프링 시큐리티의 로그인 로직 (0) | 2023.02.20 |