Spring Boot(Security login #2)
우리는 앞으로 Spring Security에서 인증이 안된 사용자들이 "/auth" 경로를 통해 접근할 수 있도록 설정할 것이다.
예를들어서 JoinForm(회원가입), loginForm(로그인페이지) 들은 인증이 필요하지 않은 곳이기 때문에 "/auth" 경로로 설정하는 것이다.
필요한 모든 곳의 주소를 변경했다면 config라는 패키지를 하나 만들고 패키지속에 SecurityConfig 라는 Class를 생성해준다.
SecurityConfig 클래스 속에서 WebSecurityConfigurerAdapter 클래스를 상속(extends)후 HttpSecurity를 가지고 있는 configure() 메소드를 오버라이딩 해준다.
설정파일을 bean으로 등록하기 위해서는(스프링 컨테이너에서 객체를 관리할 수 있게 하는 것) @Configuration 을 사용하면 된다.
Security는 모든 Request를 가로챈다. Controller로 가기전에 모든 것을 가로채기 때문에 필터링을 위해 @EnableWebSecurity 어노테이션을 사용해야한다. (스프링 시큐리티가 활성화되어 있는데 어떠한 설정들을 해당 파일에서 해주겠다는 의미)
특정 주소로 접근을 하면 권한 및 인증을 미리 체크하기 위해 @EnableGlobalMethodSecurity 어노테이션을 사용한다.
이 3개의 어노테이션은 세트로 생각하면 된다!
- .authorizeRequests() : 어떤 요청이 들어올 경우
- .antMatcher("/auth/**) : ()안의 경로로 들어올 경우
- .permitAll() : 허락한다.
- .anyRequest() : 이것들이 아닌 다른 모든 요청들은
- .authenticated() : 인증이 필요하다.
- .formlogin() : 로그인 폼을
- .loginform() : 이 주소로 하겠다.
이렇게 모든 설정을 마치면 Spring Security가 우리 사이트의 모든 접근을 막고 자동으로 이동 시켰던 로그인페이지 말고 우리의 임의대로 커스터마이징한 "/auth/loginForm" (로그인페이지)로 이동할 수 있다.