내일배움캠프(114)
-
[일정 관리 앱] 리팩토링(3)
원래라면 JWT 를 프로젝트에 반영하면서 부터 구현했어야 하는 것이 맞지만 이후 요구사항 반영을 위해 미루어 왔던 'Access Token' 재발급에 대한 내용과 '관리자(ADMIN)' 권한을 가진 관리자 계정에 대한 부분을 해당 게시글에 기록하고자 한다. 이번에 프로젝트에 반영된 내용은 여기서 확인이 가능하다. 1. Access Token 재발급 이전 게시물에서도 몇 번 언급했지만 과제에 주어진 요구사항에는 'Access Token' 에 대한 내용만 있을 뿐 'Refresh Token' 에 대한 내용은 없다. 하지만 이번 기회에 'Refresh Token' 또한 활용해보고 싶었기에 개인적으로 추가한 상태이다. Access Token 의 사용목적은 '인증/인가' 이며, Refresh Token 의 사용목..
2024.10.15 -
[내일배움캠프] TIL - 24.10.15(화)
'도전 기능' 에 대한 요구사항까지 어제 다 반영을 하였다. 하지만 '도전 기능' 의 핵심 요구사항만 반영했기에 오늘은 리팩토링을 진행하며 동시에 반영하지 못한 세부 요구사항들을 함께 반영했다.필터 예외처리 반영Member CRUD 및 로그인/로그아웃 수정이후로는 Schedule CRUD 를 수정하고 JWT 재발급을 위한 RefreshToken CRUD 를 작성한 뒤 과제를 제출할 것 같다. ※ 참고 : 나는 TIL 작성 방식을 내가 학습하며 정리한 다른 게시글들과 하이퍼링크를 거는 방식으로 작성하였다. 학습한 내용에 하이퍼링크를 걸어두었으니 해당 링크를 통해 학습을 정리한 내용에 접근할 수 있다.
2024.10.15 -
[일정 관리 앱] 리팩토링(2)
이번에는 '유저(멤버)' 엔티티를 다루는 요청에 대한 모든 부분을 하나씩 확인하며 수정해 보려한다. 수정은 요청시 '인증 필요' 의 유무로 구분지어 나누어 진행했다. 이번 리팩토링을 통해 수정된 코드는 여기서 확인 가능하다.인증 불필요 : 회원 가입, 로그인인증 필요 : 그 외 모든 기능과제의 요구사항에 따라 위와 같이 구분짓게 되었다. 1. 인증이 불필요한 요청 아래의 요청들은 필터에서 인증/인가를 수행하지 않고 곧장 'MemberController' 에 'ServletRequest, ServletResponse' 를 전달하게 된다. 1-1. 회원 가입 '회원 가입' 에는 회원(유저)의 '이름, 이메일(계정 ID), 비밀번호(계정 비밀번호)' 정보를 전달 받아야 한다. 전달받은 정보로 새로운 회원에 대..
2024.10.15 -
[일정 관리 앱] 리팩토링(1)
이전 게시물에서 말한 것 처럼 현재 모든 요구사항을 반영한 것이 아니다 '도전 기능' 에 해당하는 '세부 요구사항' 을 반영하지 않았기에 해당 요구사항들을 반영하면서 리팩토링을 진행해보려 한다. 과제 제출 전까지 진행할 리팩토링 순서는 아래와 같다.필터(인증/인가) → 유저(멤버) → 일정 → 나머지 엔티티기본적으로 적절한 클래스명, 메서드명, 변수명으로 수정 및 비즈니스 로직 수정이번 게시글에서는 '필터' 에 초점을 맞춰 리팩토링을 진행하려 한다. 이번 리팩토링으로 인해 수정된 코드는 여기서 확인이 가능하다. 1. 필터 필터를 사용하니 비즈니스 로직에서 '인증/인가' 를 분리할 수 있었다. 이번 프로젝트에서의 인증, 인가에 대한 예시는 아래와 같다.인증 : 일정을 생성하는 것은 회원(멤버)만이 가능하다..
2024.10.15 -
[일정 관리 앱] 도전 기능 요구사항 반영
과제의 요구사항 중 '도전 기능' 에 대한 프로젝트 반영을 끝내고(핵심 요구사항만) 요구사항 반영간 있었던 이슈에 대해서 작성해보고자 한다. 참고로 현재 '도전 기능' 의 모든 요구사항을 반영한 것은 아니다. 요구사항 중 핵심 요구사항을 반영하고 테스트한 상태라 세부 요구사항에 대한 부분은 리팩토링을 진행하면서 반영할 생각이다. 각 요구사항을 반영하며 작성한 코드는 아래의 링크를 통해 확인할 수 있다.도전 기능(Level.01 , 전체기준 Level.06)도전 기능(Level.02~03 , 전체기준 Level.07~08) 도전 기능(Level.04, 전체기준 Level.09) 1. JWT 검증시 발생하는 예외 강의 및 검색을 통해 JWT 에 대한 구현을 진행하면서 JWT 검증에 아래와 같은 코드를 참고해..
2024.10.14 -
[일정 관리 앱] N : M(다대다) 관계 풀어내기
Lv.4 요구사항은 단순하게 보면 '유저' 정보를 갖는 엔티티를 추가하는 것이다. 하지만 세부 요구사항을 보면 'N : M' 관계에 대해 더 집중해야 함을 예상할 수 있었다. 1. ERD간략하게 요구사항을 정리하면 '유저' 엔티티가 추가되며 '일정' 엔티티는 작성자에 대한 정보로 '유저' 엔티티의 식별자 값을 가져야 한다. 더불어 일정 생성시 작성자(유저)는 일정을 관리(담당)해 줄 '관리자' 를 설정할 수 있어야 한다.한 명의 유저는 여러개의 일정을 작성 가능 - "유저 엔티티 : 일정 엔티티 = 1 : N"하나의 일정에 여러명의 일정 관리자(=유저)를 지정 가능 - "일정 엔티티 : 유저 엔티티 = 1 : N"즉, 유저 엔티티와 일정 엔티티는 'N : M(다대다)' 관계를 맺어야 하는 것이다. 솔직히..
2024.10.12