스프링 인증 블로그 V2 (시큐리티 필터)

로그인 관련 코드
김인범's avatar
Nov 28, 2024
스프링 인증 블로그 V2 (시큐리티 필터)

SecurityConfig (filter 기능)

notion image
베이직한 시큐리티 필터 기능 구현입니다.
 
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정보를 저장하고 있게 됩니다.
notion image
 

AuthenticationPrincipal

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

taker