Authentication

yesrin·2023년 7월 13일

Security

목록 보기
2/2
  • 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) {

profile
안녕하세요! 틀린 정보는 댓글 달아 주세요.

0개의 댓글