JavaProject/Spring Boot

Spring Boot(Security login #2)

devel0per 2022. 9. 25. 00:16

우리는 앞으로 Spring Security에서 인증이 안된 사용자들이 "/auth" 경로를 통해 접근할 수 있도록 설정할 것이다.

 

예를들어서 JoinForm(회원가입), loginForm(로그인페이지) 들은 인증이 필요하지 않은 곳이기 때문에 "/auth" 경로로 설정하는 것이다.

주소 변경

 

필요한 모든 곳의 주소를 변경했다면 config라는 패키지를 하나 만들고 패키지속에 SecurityConfig 라는 Class를 생성해준다.

config/SecurityConfig.java

 

SecurityConfig 클래스 속에서 WebSecurityConfigurerAdapter 클래스를 상속(extends)후 HttpSecurity를 가지고 있는 configure() 메소드를 오버라이딩 해준다.

설정파일을 bean으로 등록하기 위해서는(스프링 컨테이너에서 객체를 관리할 수 있게 하는 것) @Configuration 을 사용하면 된다.

Security는 모든 Request를 가로챈다. Controller로 가기전에 모든 것을 가로채기 때문에 필터링을 위해 @EnableWebSecurity 어노테이션을 사용해야한다. (스프링 시큐리티가 활성화되어 있는데 어떠한 설정들을 해당 파일에서 해주겠다는 의미)

특정 주소로 접근을 하면 권한 및 인증을 미리 체크하기 위해 @EnableGlobalMethodSecurity 어노테이션을 사용한다.

이 3개의 어노테이션은 세트로 생각하면 된다!

 

3개의 어노테이션

 

  • .authorizeRequests() : 어떤 요청이 들어올 경우
  • .antMatcher("/auth/**) : ()안의 경로로 들어올 경우
  • .permitAll() : 허락한다. 
  • .anyRequest() : 이것들이 아닌 다른 모든 요청들은
  • .authenticated() : 인증이 필요하다.
  • .formlogin() : 로그인 폼을
  • .loginform() : 이 주소로 하겠다.

설정

 

 

이렇게 모든 설정을 마치면 Spring Security가 우리 사이트의 모든 접근을 막고 자동으로 이동 시켰던 로그인페이지 말고 우리의 임의대로 커스터마이징한 "/auth/loginForm" (로그인페이지)로 이동할 수 있다.