[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 사용
      • 흐름
      • permitAll()로 허가가 되지않은 url들은 filter를 타고 처리가 됨
      • 이때 @AuthenticationPrinciple 어노테이션을 통해 UserDetails를 통해 해당 user가 올바른 유저인지 필터를 통해 판단하고 값이 인증이 되면 컨트롤러에서 service까지 접근가능

 

  • 코드 리펙토링
    • 이전의 경우 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