[TIL] Today I Lerned - 230104
2023. 1. 4. 22:08ㆍ기록/TIL
[TIL] Today I Lerned - 230104
230104 기록
프로젝트
- 좋아요 조회 코드 작성
- 어제 작성한 좋아요 관련 메서드에 이어서 이번에는 조회를 담당하는 코드를 작성
- 방식은 간단하게 기존 LikeCommentRepository에서 해당 comment Id를 가지고 있는 값을 가져와 리스트화
- 리스트가 된 부분들을 Stream().count()로 Long값을 가져와서 Return 값에 넣어주는 방식으로 진행
@Transactional
public String getCountLike(Long id) {
Comment comment = commentRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("존재하지 않는 Comment 입니다"));
Long count = likeCommentRepository.findAllByComment(comment).stream().count();
return "현재 좋아요 갯수는 " + count +"개 입니다.";
}
- spring security 작업
- 사용한 기능
- HttpSecurity
- 인가의 API / 들어오는 어떠한 요청에도 검사를 통해 인증받도록 한다
- authodizeHttpRequest()
- anyRequest()
- authenticated()
- requestMatcher().permit() - 해당 requestMatcher와 맞는 url의 요청은 permit한다는 뜻
- addFilterBefore() - 필터를 통해 검사를 하기전에(Before) 먼저 다른 필터를 통해 검사를 하겠다는 뜻
- 해당 프로젝트의 경우 Jwt 사용을 위해 JwtAuthFilter를 작성하여 사용
- JwtAuthFilter의 경우 OncePerRequestFilter를 상속
- Override 구현 - doFilterInternal
- 해당 필터내에서 JWT 인증을 마치고 나서 다음 필터로 넘어가는 filterChain.doFilter 사용
- 해당 프로젝트의 경우 Jwt 사용을 위해 JwtAuthFilter를 작성하여 사용
- 흐름
- permitAll()로 허가가 되지않은 url들은 filter를 타고 처리가 됨
- 이때 @AuthenticationPrinciple 어노테이션을 통해 UserDetails를 통해 해당 user가 올바른 유저인지 필터를 통해 판단하고 값이 인증이 되면 컨트롤러에서 service까지 접근가능
- 인가의 API / 들어오는 어떠한 요청에도 검사를 통해 인증받도록 한다
- 코드 리펙토링
- 이전의 경우 HttpServletRequest를 사용하여 각 controller에서 service로 user의 정보를 전달을 하였고 service 내 에서 토큰을 검사하는 로직이 다수 등장
- security를 사용하게 되면서 검증이 된 유저만 넘어오게 됨.
- 컨트롤러 (HttpServletRequest → UserDetailsImpl)
- 서비스(비지니스) 코드 전반적으로 존재했던 jwt를 resolve하여 유저 정보를 가져오는 로직 제거
'기록 > TIL' 카테고리의 다른 글
[TIL] Today I Lerned - 230106 (0) | 2023.01.06 |
---|---|
[TIL] Today I Lerned - 230105 (0) | 2023.01.06 |
[TIL] Today I Lerned - 230103 (0) | 2023.01.03 |
[TIL] Today I Lerned - 230102 (0) | 2023.01.02 |
[TIL] Today I Lerned - 221230 (0) | 2022.12.30 |