Intellij
UserDetails는 Spring Security에서 사용자 정보를 나타내는 인터페이스입니다. 주로 인증(Authentication)을 처리할 때 사용되며, 사용자 이름, 비밀번호, 권한(roles) 등의 정보를 제공합니다.getUsername(): 사용자 이름을 반환getPassword(): 사용자의 비밀번호(보통 암호화된 형태)를 반환getAuthorities(): 사용자의 권한을 반환isAccountNonExpired(), isAccountNonLocked(), isCredentialsNonExpired(), isEnabled(): 계정 상태를 나타내는 메서드들UserDetailsService를 통해 UserDetails 객체를 반환받고, 이를 기반으로 사용자를 인증UserDetails는 사용자 정보를 포함한 인증 관련 객체이며, Spring Security가 사용자 인증을 처리할 때 사용합니다.HandlerMethodArgumentResolver는 Spring MVC에서 컨트롤러 메서드의 파라미터를 자동으로 주입하는 역할을 담당하는 인터페이스입니다. 클라이언트 요청에서 전달된 데이터를 적절한 타입으로 변환해 컨트롤러 메서드의 매개변수로 전달합니다.supportsParameter(MethodParameter parameter): 해당 파라미터가 처리 가능한지 여부를 확인resolveArgument(...): 실제로 파라미터를 변환하고 전달하는 메서드HandlerMethodArgumentResolver는 Spring MVC에서 클라이언트의 요청 데이터를 적절한 형식으로 변환해 컨트롤러 메서드의 파라미터에 전달하는 역할을 합니다.| 특징 | UserDetails | HandlerMethodArgumentResolver |
|---|---|---|
| 역할 | Spring Security에서 사용자 인증 정보를 관리 | Spring MVC에서 요청 데이터를 컨트롤러 메서드 파라미터로 전달 |
| 주요 위치 | 인증(Authentication) 처리 과정 | 요청(Request) 처리 과정 |
| 적용 범위 | 사용자의 인증 정보(이름, 비밀번호, 권한 등) 관리 | 요청 파라미터를 컨트롤러에 전달 |
| 사용 영역 | Spring Security (보안) | Spring MVC (웹 요청 처리) |
| 주요 메서드 | getUsername(), getPassword(), getAuthorities() 등 | supportsParameter(), resolveArgument() |
UserDetails는 보안(인증/인가)에 관련된 사용자 정보 처리를 담당하고, HandlerMethodArgumentResolver는 HTTP 요청에서 데이터를 컨트롤러로 전달하는 데 사용
UserDetails는 Spring Security에서 사용자를 인증할 때 활용되지만, 컨트롤러 메서드에서 로그인된 사용자의 정보를 쉽게 접근할 수 있게 하려면 HandlerMethodArgumentResolver를 사용해 UserDetails 객체를 파라미터로 주입받을 수 있도록 처리UserDetails를 통한 인증HandlerMethodArgumentResolver로 컨트롤러에 사용자 정보 전달HandlerMethodArgumentResolver 등록SecurityContextHolder를 사용해 매번 사용자 정보를 직접 가져오지 않아도 됩니다.HandlerMethodArgumentResolver 덕분에, 인증된 사용자 정보를 메서드에 자동으로 주입받을 수 있습니다.