티스토리 뷰
728x90
반응형
1. 인증 기능 구현 1
(1) 구현 목표
- 인증 기능을 구현하여 인증이 필요한 영역에서 특정 유저만 특정 행동을 할 수 있도록 한다.
- 인증이 필요 없는 영역에는 루트 페이지, 게시판 페이지가 있고,
- 인증이 필요한 영역에는 게시글/댓글 페이지, 자신이 작성한 게시글/댓글 저장, 수정, 삭제가 있다.
(2) SecurityConfig에 rule 추가
- 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를 통해서 검색하고 UserAccountDto로 mapping 해준 뒤 인증 관련하여 방금 생성한 BoardPrincipal로 mapping을 해준다. 만약 사용자 id를 찾지 못했다면, UsernameNotFoundException이라는 UserDetailsService의 기본 메서드를 통해 에러 메시지를 띄운다.
- Spring Security의 인증 기능을 사용하기 위해서는 반드시 PasswordEncoder도 등록을 해주어야 한다.
(3) JpaConfig AuditorAware 설정
- SecurityContextHolder는 모든 Security 정보를 들고 있는데 여기서 로그인 정보를 가져와 사용자가 로그인 하고 있는 상태인지 확인하고 로그인 정보를 통해 아이디를 확인할 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - 깃헙 릴리즈 및 헤로쿠 배포 (0) | 2023.09.15 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 인증 기능 구현 2 (0) | 2023.09.14 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시글 댓글 구현 (0) | 2023.09.12 |
[Java Project] Part 2. 게시판 서비스 만들기 - 해시태그 검색 구현 (0) | 2023.09.11 |
[Java Project] Part 2. 게시판 서비스 만들기 - 해시태그 검색 구현 (0) | 2023.09.10 |
댓글