본문 바로가기
👩‍💻 BackEnd/🍃 스프링부트 [SpringBoot]

16강 Spring Security Config 설정 - 로그인 페이지로 이동하도록 설정

by minhe2810 2023. 12. 29.

스프링 시큐리티 

어떤 요청이 들어왔을 경우 pom.xml 설정에 spring security관련 라이브러리가 추가되어있을 경우 

인증되지 않은 사용자가 접근하려고 하는 경우 기본적으로 로그인 화면으로 Redirection을 해 줌. 

 

Redirection이라는 것은 이전 글에서 설명했던 것과 같이 어떤 요청이 들어왔을 경우 다른 요청으로 바꿔서 보내는 것을 의미함. 

 

localhost:8080을 주소줄에 입력 후 enter를 치면 주소 줄이 localhost:8080/login 으로 자동으로 Redirection이 됨. 

 

따라서 내가 설정한 로그인 페이지로 이동할 수 있도록 설정하기 위해서는  SecurityConfig 파일을 생성 후 작성할 필요가 있음. 

 

@EnableWebSecurity // 해당 파일로 security 활성화
@Configuration // IoC -> 빈으로 등록 메모리에 뜨게함 -> 기존 시큐리티가 가로채고 있음
public class SecurityConfig extends WebSecurityConfigurerAdapter {  

}

 

1. WebSecurityConfigurerAdapter 를 상속 받아야 함. 

2. @Configuration : IoC  ▷ 빈으로 등록하여 메모리에 띄움.

3. @EnableWebSecurity  ▷ 해당 파일로 security 활성화.

 

 

그리고난 후, 설정이 필요함. 

 


 

1. 메서드 오버라이드 하기 

overide 목록 (메서드 재정의 목록)에서 configure 메서드 overide 하기

 

 

 @Override
 protected void configure(HttpSecurity http) throws Exception {
   super.configure(http);  // 기본 설정  -> 이 코드가 있어서 시큐리티가 가로채서 기본 로그인 창이 뜨는 것임.
   
}

HttpSecurity http를 매개변수로 갖는 메서드 선택 후 재정의 

 

1) super.configure(http); 주석 처리 전 

주석 처리 전

 

super.configure(http); 를 지우면 기존 시큐리티가 갖고 있는 기능이 모두 비활성화됨. 

 

2) super.configure(http); 주석 처리 후 

주석 처리 후


 

2. overide 한 메서드 수정하기 

@Override
protected void configure(HttpSecurity http) throws Exception {
	http.csrf().disable(); // 토큰을 갖고 있는지 아닌지 구분하지 않겠다.
    	http.authorizeRequests()
    		.antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**").authenticated()
        	// 인증된 사용자의 경우 다음과 같은 요청 url을 가질 경우 인증이 필요하고(authenticated), 
      	  	.anyRequest().permitAll();
     	  	// 그 외의 모든 요청은 허용하겠다. 
}

이렇게 코드를 작성한 뒤 실행시켜보면, 

 

403 에러코드가 반환됨. 

 

403번 에러코드 : Forbidden /  서버가 허용하지 않는 웹 페이지나 미디어를 사용자가 요청할 때 웹 서버가 반환하는 HTTP 상태 코드 

출처 : 위키백과  

 

 

따라서 antMatchers에 명시되어있지 않은 url의 경우에는

사용자가 로그인 페이지로 이동을 시켜 로그인을 하도록 유도하거나 회원가입을 할 수 있도록 설정을 하는 것이 좋다! 

 

@Override
protected void configure(HttpSecurity http) throws Exception {
    	http.csrf().disable(); // 토큰을 갖고 있는지 아닌지 구분하지 않겠다.
        http.authorizeRequests()
                .antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**").authenticated()
                .anyRequest().permitAll()
                .and()
                .formLogin()
                .loginPage("/auth/signin") // GET  로그인 페이지의 요청주소 명시하기! 
                .loginProcessingUrl("/auth/signin")// post -> 스프링 시큐리티가 로그인 프로세스 진행
                .defaultSuccessUrl("/");
    }

 

  • defaultSuccessUrl("/") : login 이 성공적으로 이루어졌을 경우 보내는 주소 
이런식으로 스프링 시큐리티 초기 설정을 할 수 있다는 것을 배웠다!