티스토리 뷰

728x90
반응형

1. 인증 기능 구현 1

(1) 구현 목표

  • 인증 기능을 구현하여 인증이 필요한 영역에서 특정 유저만 특정 행동을 할 수 있도록 한다.
  • 인증이 필요 없는 영역에는 루트 페이지, 게시판 페이지가 있고,
  • 인증이 필요한 영역에는 게시글/댓글 페이지, 자신이 작성한 게시글/댓글 저장, 수정, 삭제가 있다.

 

(2) SecurityConfigrule 추가

  • mvcMatchers 메서드 활용하여 룰을 추가한다.
  • GET 이 요청되었을 때나 어떤 페이지들이 요청되었을 때 허용해 줄 것인지 설정할 수 있다.
  • WebSecurityCustomizer 에서 web.ignoring 메서드를 활용하면 Spring Security의 감독 범위를 벗어나게 설정할 수 있다. (css나 js 등) 하지만 보안 공격에 취약해질 수 있기 때문에 authorizeHttpRequests에서 관리하도록 이동 시키는 것이 더 좋다.
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
	return (web) -> web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());
    }
  • UserDetailsService 메서드를 통해서 인증 데이터를 가져오는 서비스 로직을 구현한다.
    • 인증 서비스에 필요한 BoardPrincipal를 구현한다.
    • 먼저dto 디렉터리에 security 디렉터리를 생성하고, BoardPrincipal를 Record로 생성한다.
    • UserAccount를 참고하여 인증에서 필요한 정보들을 체크한다.
    • 이때 BoardPrincipal는 UserDetails를 implements한다. 이 안에 구현해야 하는 메서드 들은 Implement Method를 통해 쉽게 알 수 있다.
    • 실제 사용하지 않는 메서드들은 True를 반환해주면 된다.
    • 이외 아이디와 비밀번호는 필드에 작성된 명칭으로 바꿔주면 된다.
    • Generate > Constructor > Canonical constructor를 of로 바꿔주어서 팩토리 메서드로 전환하고 불필요한 것은 삭제해 준다.
  • 인증 데이터는 ID를 통해서 검색하고 UserAccountDtomapping 해준 뒤 인증 관련하여 방금 생성한 BoardPrincipalmapping을 해준다. 만약 사용자 id를 찾지 못했다면, UsernameNotFoundException이라는 UserDetailsService의 기본 메서드를 통해 에러 메시지를 띄운다.
  • Spring Security의 인증 기능을 사용하기 위해서는 반드시 PasswordEncoder도 등록을 해주어야 한다.

 

(3) JpaConfig AuditorAware 설정

  • SecurityContextHolder는 모든 Security 정보를 들고 있는데 여기서 로그인 정보를 가져와 사용자가 로그인 하고 있는 상태인지 확인하고 로그인 정보를 통해 아이디를 확인할 수 있다.

 


 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글