SecurityConfig (filter 기능)

베이직한 시큐리티 필터 기능 구현입니다.
http.authorizeHttpRequests( )를 시작으로 클라이언트의 요청이 왔을 때 대응할 로직을 구현합니다.
.formLogin( ) 를 통해서 사용자가 로그인 할 때 대응을 설정합니다.
.loginPage 를 통해서 커스텀 해 둔 로그인 페이지를 이용할 수 있도록 합니다.
.loginProcessingUrl("/login")
을 통해서 시큐리티에서 제공하는 로그인 로직을 사용할 수 있게 됩니다. .defaultSuccessUrl("/")
를 통해서 사용자가 로그인 성공 시 변수로 설정한 해당 페이지로 이동을 시켜줍니다.
r.requestMatchers("/s/**").authenticated().anyRequest().permitAll()
해당 코드에서.requestMatchers("/s/**").authenticated()
이 범위의 코드는/s/로 시작하는 페이지는 인증된 사용자만 이용 가능하게 만들어줍니다.
다음 코드로
.anyRequest().permitAll()
/s/ 로 시작하는 페이지 이 외의 모든 페이지는 사용자가 인증되지 않아도 사용 가능하도록
설정하는 코드입니다.
.loginProcessingUrl("/login")
동작 중 Service 클래스에 만들어둔 loadUserByUsername을 통해
DB에 저장되어 있는 사용자 정보를 확인하고
서버 Session에 User정보를 저장하고 있게 됩니다.

AuthenticationPrincipal

어노테이션 (AuthenticationPrincipal)
해당 어노테이션은 사용자가 로그인에 성공하여 페이지로 왔을 시
- 사용자 정보는 securityContext에 저장되어 있습니다.
@AuthenticationPrincipal 을 통해 저장된 사용자 정보를
User객체로 추출하여 매개변수로 주입합니다.
이후 사용자 정보는 매개변수로 User 객체로 전달되어 사용자 정보를 이용할 수 있도록 해줍니다.
@AuthenticationPrincipal 을 이용하기 위해서는 User객체가
Security의 기본 UserDetails를 상속하거나 구현하고 있어야 합니다.

객체가 UserDetails를 상속할 경우
다음과 같은 메서드들을 구현해야 합니다.

Share article