Authentication

현재 인증된 사용자를 나타내며 SecurityContext에서 가져올 수 있습니다.
principal : 사용자를 식별합니다.
Username/Password 방식으로 인증할 때 일반적으로 UserDetails 인스턴스입니다.
credentials : 주로 비밀번호, 대부분 사용자 인증에 사용한 후 비웁니다.
authorities : 사용자에게 부여한 권한을 GrantedAuthority로 추상화하여 사용합니다.
선언
<UserDetails>
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
UserRoleEnum role = user.getRole();
String authority = role.getAuthority();
SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(authority);
Collection<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(simpleGrantedAuthority);
return authorities;
}
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
사용예시
@GetMapping("/products")
public String getProducts(@AuthenticationPrincipal UserDetailsImpl userDetails) {
// Authentication 의 Principal 에 저장된 UserDetailsImpl 을 가져옵니다.
User user = userDetails.getUser();
System.out.println("user.getUsername() = " + user.getUsername());
return "redirect:/";
}
중요 코드
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
@GetMapping("/products")
public String getProducts(@AuthenticationPrincipal UserDetailsImpl userDetails) {