진짜 개발자
본문 바로가기

분류 전체보기 (총 582개)

Spring Security - Spring MVC Test하기(@WithMockUser, form login 리다이렉션 해결) Sprint security MVC Test Spring MVC를 이용해 웹을 개발하면, 인증 및 허가를 편리하게 다루기 위해 Spring Security를 사용합니다. 또한 어플리케이션을 개발하다보면 필수적으로 테스트코드를 작성하게 됩니다. 하지만, 이때 Security Form Login이 적용되어 있다면, 자동으로 유저를 로그인 페이지로 리다이렉션 시키키 때문에, 우리가 원하는 테스트를 진행하기 어렵습니다. Spring Security 사용시 MVC Test하기 1. Test Project 생성 완성된 프로젝트 구조입니다. 아래에서 각각의 파일들을 자세히 알려드리겠습니다. build.gradle dependencies { implementation 'org.springframework.boot:sp..
DVCS - git credential 관리 (최초 push시 credential을 입력하지 않아도 되도록하기) 최초 Git Push시 Credential을 입력하지 않도록 하기 최초 repository를 clone한 후, Git push를 할때, 위 그림과 같이 git은 authentication을 진행하도록 되어있습니다. (git clone은 public repo인 경우 아무나 수행할 수 있기 때문입니다.) 예약 push 개발을 하던 도중, push를 예약해야 하는 경우가 있었습니다. 예약을 통해 push를 하기 위해서, crontab 을 이용하기로 했었는데, 이때 clone후, credential을 입력해야 했기 때문에, shell을 이용해 자동화에 어려움이 있었습니다. 물론, clone을 한 뒤, push를 한번 수행하거나, 기존 개발을 진행하던 PC에서 crontab을 작성하면, credential을 작성..
Servlet  - SpringMVC을 사용하기 전 꼭 알아야 할 Servlet Servlet 이해하기. Servlet 이란? 간단히 말씀드려, 자바진영의 CGI 라고 볼 수 있습니다. 우선 CGI가 무엇인지부터 알아보아야 할것 같습니다. 1. CGI CGI란, 동적으로, 웹페이지를 생성하는 Web Server의 프로그램을 실행하기 위한 Interface를 의미합니다. 조금 더 쉽게 알려드리겠습니다. 1.1 CGI란? CGI가 없는 웹서버 CGI가 없는 웹 서버의 경우 사용자의 요청에 따라, 미리 작성된 html 사용자에게 전송이 됩니다. 어렸을때, 학교에서 보던, 반마다 있던 게시판을 떠올려보시면, 됩니다. 게시판의 내용을 누가 수정하지 않는 이상, 학생들은 항상 같은 내용의 게시판을 보게 됩니다. CGI CGI가 있는 경우, 웹서버는 사용자의 요청에 따라 동적으로 html을 작성..
Spring Boot - REST API 인증 - 2 (Refresh Token이란?) jwttoken 이번 포스팅에서는, JWT Token을 이용한 REST API 인증 후, Token이 만료된 경우의 처리 방법에 대해 알아보겠습니다. REST API 인증 1 - https://galid1.tistory.com/638위의 링크를 통해 REST API 인증 과정을 숙지하고 오시면 더욱 이해가 쉽습니다. 1. Refresh Token을 사용하지 않는 경우우선 인증 과정은 위와 같습니다. 토큰이 만료되었다면?토큰이 만료되었다면, 사용자의 로그인 세션이 만료된것과 마찬가지이므로, 로그인을 재차 시도해야합니다. 위의 방법은 잘못 되었다why ?이 방법은 토큰이 만료될때마다 사용자가 다시 로그인을 해야합니다. 그러나, 사용자가 로그인을 할때에는 사용자의 아이디 비밀번호가 이용되는데, 이정보는 네트워..
Spring Boot - 개발자를 기억하게하지 말자 (파일리스트와 데이터리스트 요청을 하나의 객체로 바인딩하기 : @ModelAttribute) file과 data를 객체로 바인딩하기 Spring을 이용해 Rest API 개발중, file과 data를 같이 업로드해야 하는 상황이 있었습니다. file과 data는 논리적으로 연관관계가 있었으며, 이를 List형태로 전송하는 경우, 각각의 인덱스 요소가 논리적으로 같은 데이터임을 기억해야하는 상황이었습니다.이때 이들을 하나의 객체로 맵핑하여 이 조건을 개발자가 기억하지 않아도 되도록 변경하였습니다. 1. 시나리오예를들어, 어떤 팀에 멤버를 추가하는 상황에서 멤버의 프로필 정보와, 사진을 같이 받아야 한다고 할때. 클라이언트는, 서버에게 사용자의 프로필정보(data)와 사진(file)을 함께 전송해야 합니다. 1.1 중요 사항이때, 멤버의 사진과 프로필 정보는, 논리적으로 연..
ApplicationKnowhow/Server - 사용자 입력 값 검증방법과 노하우 검증 서버를 개발하며 그 동안 값 검증을 하면서 의문이 드는 점과, 노하우라면 노하우라 할 수 있는 얕은 지식을 공유 하려고 합니다. 1. Front-end에서 값 검증을 해서 넘겨주는데 Back-end에서도 해야하나요? A. 둘다 해야합니다. 프론트에서 하는 검증은 사용자의 경험을 위해서 해야하며, 백엔드에서는 프론트에서 전달받은 값이 중간에 변형될 우려가 있어 해야합니다. 2. 값 검증을 어느 계층에서 수행해야 하나요?A. 값이 처음 들어오는 곳에서 해야합니다.값 검증은, 데이터가 처음 들어오는 곳에서 한번 수행합니다. Layered Architecture를 예로 들자면, 사용자가 값을 입력하는 Presentation 계층에서 값 검증을 수행합니다. 추가적으로, Repository에서 가져온 ..
Spring - AOP를 이용해 도메인과 Mobile Push 알림 기능을 분리하자 push aop 이번 포스팅에서는, App Server에서 도메인 기능과 완전히 분리하여, Push 알림 요청 기능을 확장한 과정을 기술하려고 합니다. 도메인과 Push 알림을 분리하자Push 알림은 도메인과 완전히 상관이 없는 개념입니다. 따라서, Push 알림이 도메인 로직에 의존해서도, 도메인 로직이 Push 알림에 의존해서도 안됩니다. 1. 기존의 아키텍쳐기존의 아키텍쳐는 DDD의 Layered Architecture를 이용해 설계가 되어있었습니다.각 계층은 아래로의 의존만을 가지며, infra(저수준 모듈의 구현) 계층의 필요한 구현은 DIP를 이용해 Application, Domain이 infra(저수준 모듈)에 의존하는 것이 아니라, infra가 고수준 모듈에 의존하도록 했습니다. 2. 문제..