시큐리티는 인증 되지 않은 사용자에게 요청이 들어올시 특정 페이지로 Redirect 시킨다.
클라이언트가 입력하는 Form 도 결국 서버에게 받은 것이다.
서버는 자기가 제공한 Form 에서만 입력이 가능하도록 Form 입력에 난수 값 속성을 추가해 놓는데, 이것이 CSRF 토큰이다.
그러면 어디로 Redirect 시킬지. 어떤 주소로 접근할때 Redirect 시킬지 등은 어떻게 정할까?
@EnableWebSecurity 어노테이션 추가 -> 해당 클래스가 Security 설정파일이 된다.
WebSecurityConfigurereAdapter 를 상속 -> configure 메서드를 오버라이딩 하기 위해
configure 메서드 오버라이딩 -> 시큐리티 설정 변경
http.csrf().disable()
: csrf 설정 끄기
http.authorizeRequests()
: http 요청에 대해
.antMatchers(~).authenticated()
: ~의 URL 접근시 인증이 필요
.anyRequest().permitAll()
: 나머지 접근은 모두에게 허용
.and()
: HttpSecurity 객체로 돌아옴
.formLogin().loginPage(~).defaultSuccessUrl(~~)
: form 방식 로그인 사용할 것이고. 로그인 페이지는 ~이며. 성공 시 기본 페이지는 ~~이다.
localhost:8080/
으로 이동해보겠다.
인증되지 않아 시큐리티에 의해 로그인창으로 Redirect 된 모습이다.