반응형 Project29 [리팩토링] HABIT - 기본 다지기 Intro정보처리 산업기사 실기 시험을 준비하느라 시험이 끝난 후 UI 작업에 돌입하여 어제부로 UI 작업이 끝났다.시험도 잘 봤고 이제는 프로젝트만 완벽하게 해내면 된다. 오늘은 리포지토리 생성 후 현재까지 작업한 UI 관련된 파일들을 push 하는 작업을 하였다. 해당 과정에 대해서 자세히 설명해 보겠다!! 진행 상황UI 작업먼저 UI를 얼추 진행한 상태이다. 해당 프로젝트의 관리자 페이지는 같이 프로젝트를 진행하고 있는 팀원이 하기로 했고, 나머지는 내가 작업하기로 했다. 내가 작업해야 하는 부분은 관리자 페이지를 제외한 모든 페이지이며, 30 페이지 정도 된다. 기존 코드에서의 필요 없는 부분들과 지저분한 코드들을 최대한 깔끔히 정리했고, 현재 내가 맡은 모든 페이지는 작업이 완료된 상태이다. t.. 2024. 5. 9. [리팩토링] 중단했던 리팩토링 재시작 Intro 학원 교육때 진행했던 '취미/여가 중계 플랫폼 HABIT'은 해당 프로젝트는 JSP와 Mybatis로 만들어졌는데, Thymeleaf와 JPA로 작년에 리팩토링을 진행했다. 하지만 리팩토링을 진행하다가 중단했었다. 그 이유는 그때 당시 JPA가 숙지되어있지 않았고, 페이지가 너무 많아서 Thymeleaf로 바꾸는 과정이 너무 힘들었다. 그때에는 '나는 백엔드 개발자가 될거야' 라는 생각 때문에 Thymeleaf로 바꾸는 과정에 시간과 에너지를 쏟는게 의미가 있는지에 대한 생각이 들었고, 일단 중단하고 공부한 후에 진행하자는 생각이 컸다. 그래서 리팩토링을 중단하고 더 공부를 하고, 이런저런 프로젝트에 참여하며 시간을 보냈다. 그러다보니 생각이 많이 바뀌었다. 막상 취업 시장에 들어가보니 현재 .. 2024. 3. 29. [리팩토링] Redis와 함께하는 인증 구현 Intro saving이라는 예산 관리 프로그램을 처음 기획했을 때는 JWT 인증 방식으로만 구현했었다. JWT 인증 방식으로 구현했을 때의 장점은 토큰 방식의 인증이므로 무상태가 유지된다는 것, 유저가 자신의 아이디 또는 서버에서 발급된 아이디(엔티티 아이디)를 가지고 있지 않아도 JWT 하나로 해결된다는 점이 좋았다. 그렇기에 JWT를 다루는 건 더 조심스러워야 한다고 생각했는데, 인증을 한 개의 토큰으로만 하려고 하니 여러 가지 문제가 생겼다. 그 문제점을 해결하려 Redis를 이용하여 Access 토큰, Refresh 토큰을 이용한 인증구현으로 리팩토링 하게 되었다. 단일 토큰 인증방식의 문제점 토큰 탈취 시 발생 위험 단일 토큰만으로 인증을 하게 됐을 때 생기는 문제점은 토큰 탈취이다. 하나의 .. 2024. 3. 14. [리팩토링] Access Token, Refresh Token 인증 프로세스 Intro 리팩토링 중인 프로젝트의 토큰 인증 프로세스를 구상해 보았다. 토큰 형식 Access Token 형식 : JWT Refresh Token 형식 : UUID Refresh Token 저장 형태 Key (String) refreshToken:{사용자 아이디} Value (String) real_refresh_token 토큰 인증 프로세스 순서도 결론 구글링과 github의 다른 개발자들의 프로세스를 찾아보아도 인증 프로세스가 일관되지 않아서 굉장히 고민을 많이 했다. 특히 Access Token 재발급 시에 Refresh Token 갱신 유무를 고민했는데 마침 Refresh Token 탈취 위험에 대한 OAuth의 Refresh Token Rotation에 대한 글을 읽었다. Refresh Tok.. 2024. 3. 5. [개인 프로젝트] 예산 관리 어플리케이션 github 주소 GitHub - newnyee/saving: 💰 예산 관리 어플리케이션💰 예산 관리 어플리케이션. Contribute to newnyee/saving development by creating an account on GitHub.github.com ❓ 프로젝트 목적- JWT 발급/인증 - RESTful API 설계 - Spring Scheduler를 활용한 알림 서비스 - 동적 쿼리를 이용한 통계 및 통계 확인을 위한 Dummy data 생성 - 타이트한 개발 일정 분배 📆 작업 기간 & 인원2023.11.09 ~ 2023.11.15 (7일) 2024.01 ~ 리팩토링 진행중 개인 프로젝트 🎤 프로젝트 소개본 서비스는 사용자들이 개인 재무를 관리하고 지출을 추적하는 데 도움을 주는 애.. 2023. 11. 17. 프리온보딩 인턴십 백엔드 TIL #6 Bounded Context 현재 두번째 프로젝트를 진행중인데 Review, ReviewStatus 엔티티를 어느 도메인에 넣고 관리할 것이냐에대한 논의를 나누던 도중 팀원분중 한분이 Bounded Context 라는 용어를 사용하며 어떠한 도메인에서 관리하는게 논리적인지에 대한 설명을 해주셨다. 단어의 뜻을 몰라서 찾아보았다. DDD의 목적 DDD의 핵심 목표는 어플리케이션 또는 그 안의 모듈간의 의존성은 최소화하고, 응집성은 최대화 하는것 이다. Bounded Context 동일한 모델이더라도 context에 따라 해석되는 의미가 달라질 수 있다. 예를 들자면 회사에서의 판매부, 경리부 그리고 배송부에서의 상품명은 ‘상품의 이름’ 이라는 자체 그 원래 뜻은 같으나 각각의 부서에서 의미하는바가 다를 수.. 2023. 11. 5. [팀 프로젝트] 소셜 미디어 통합 Feed 서비스 github 주소 GitHub - wanted-pre-onboarding-backend-team-s/social-media-integrated-feed-service: 소셜 미디어 통합 Feed 서비스 🐳 소셜 미디어 통합 Feed 서비스 🐳. Contribute to wanted-pre-onboarding-backend-team-s/social-media-integrated-feed-service development by creating an account on GitHub. github.com ❓ 프로젝트 목적 - Token 인증 방식 구현 - JWT (Json Web Token) 구현 - RESTful API 설계 - API Document 생성 📆 작업 기간 & 인원 2023.10.24 ~ 20.. 2023. 11. 3. 프리온보딩 인턴십 백엔드 TIL #5 ⭐알게된 것 StringJoiner exceptionHandler를 추가하며 메세지를 얻어올 때 사용할 메소드를 만들었다. 메세지가 여러개일 때 콤마를 구분자로하여 나열하여 반환해주는 메소드이다. 원래 코드는 boolean을 이용하여 첫번째 메세지라면 콤마를 붙이지 않는 형태로 하여 메소드를 만들었는데, 코드리뷰를 받으면서 코드를 더 간결하게 하고 가독성 있게 만들 수 있는 StringJoiner라는 클래스를 알게 되었다. StringJoiner 사용 방법 StringJoiner 객체를 생성할 때 구분자로 사용할 문자를 넣어 생성한다. 생성된 객체에 add 메소드를 이용하여 메세지를 구분자로 구분 할 단위로 넣는다. private String getMessage(MethodArgumentNotValidE.. 2023. 11. 3. 프리온보딩 인턴십 백엔드 TIL #4 ⭐알게된 것 - 스프링 시큐리티란? 스프링 시큐리티는 인증, 권한 부여 및 보호 기능을 제공하는 프레임워크다. 인증이란 해당 사용자가 본인이 맞는지를 확인하는 절차이고, 인가란 인증이 완료된 사용자에게 요청된 자원 접근이 가능한지를 결정하는 절차이다. 인증의 방식은 총 3가지가 있다. credential 방식: username, password를 이용하는 방식 하드웨어 인증: 자동차 키와 같은 방식 이중 인증(twofactor 인증): 사용자가 입력한 개인 정보를 인증 후, 다른 인증 체계(예: 물리적인 카드)를 이용하여 두 가지의 조합으로 인증하는 방식이다. 스프링 시큐리티는 이들 중 credential 기반의 인증을 취한다. principal: 아이디 credential: 비밀번호 특정 자원에 접근을.. 2023. 10. 29. 이전 1 2 3 4 다음 반응형