구글 로그인 어노테이션 기반으로 개선하기
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
지금까지 짠 코드를 확인하면 같은 코드가 반복되는 부분이 존재한다. 이렇게 같은 코드가 반복하면 이후에 수적이 필요할 때 모든 부분을 하나씩 찾아가며 수정해야 하므로 유지보수성이 떨어진다. 바로 세션값을 가져오는 부분이 개선할만한 가치가 있다. SessionUser user = (SessionUser) httpSession.getAttribute("user"); 이제 이 부분을 메소드 인자로 세션값을 바로 받을 수 있게 만들 것이다. @LoginUser 만들기 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface LoginUser { } @Target(ElementType.PARAMETER) 이 어노테이션이..
스프링 시큐리티와 OAuth2.0으로 로그인 기능 구현하기-구글
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
스프링 시큐리티는 막강한 인증과 인가 기능을 가진 프레임워크이다. 스프링은 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극 권장하고 있다. 이번 프로젝트에서는 프로젝트 자체 로그인을 구현하는 것이 아닌 OAuth2.0을 이용해 로그인을 구현해 볼 것이다. 이 책에서는 스프링 부트 2.0을 기준으로 구현했다. 하지만 나는 스프링 부트 3.0을 기준으로 구현할려고 한다. 스프링 부트 1.5 VS 스프링 부트 2.0 OAuth2 연동 방법이 1.5에 비해 2.0에서 많이 달라졌다고 한다. 내가 설계한 프로젝트의 스프링 부트 버전은 3.0이다. 2.0과 OAuth2 에서는 크게 변경되지는 않았지만 SecurityConfig를 다르는 부분이 달라졌다. 만약 스프링 부..
머스테치로 화면 구성하기(3) 수정, 삭제
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
게시글 수정 화면 만들기 게시글 수정 API는 저번에 이미 만들었다. @Transactional public Long update(Long id, PostsUpdateRequestDto requestDto){ Posts posts = postsRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다. id="+ id)); posts.update(requestDto.getTitle(), requestDto.getContent()); return id; } 그러므로 API 요청만 잘 하면된다. posts-update.mustache {{>layout/header}} 게시글 수정 글 번호 제목 작성자 내용 {{po..
머스테치로 화면 구성하기(2) 등록, 조회
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
게시글 등록 화면 만들기 이 책은 오픈소스인 부트스트랩을 이용하여 화면을 만들었다. 부트스트랩, 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 있는 방법은 크게 2가지가 있다. 외부 CDN을 사용하기 직접 라이브러리를 받아서 사용하기 이 책은 외부 CDN을 사용한다. 이 프로젝트는 직접 내려받아 사용할 필요도 없고, 사용 방법도 HTML/JSP/Mustache에 코드만 한 줄 추가하면 되니 굉장히 간단하다. 실제 서비스에서는 외부 CDN 방법을 잘 사용하지 않는다. 외부 서비스에 의존하게 돼버려서, CDN을 서비스하는 곳에 문제가 생기면 덩달아 같이 문제가 생기기 때문이다. 부트스트랩, 제이쿼리 추가하기 index.mustache에 추가해줘야 한다. 레이아웃 방식으로 추가한다. 레이아웃 방식이란 공통 영..
머스테치로 화면 구성하기(1)
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란? 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어를 이야기한다. 템플릿 엔진은 서버 템플릿 엔진(JSP, Freemarker)과 클라이언트 템플릿 엔진(React, Vue)으로 나뉜다. 서버 사이드 템플릿 엔진은 서버에서 DB 혹은 API에서 가져온 데이터를 미리 정의된 템플릿(Template)에 넣어 HTML 문서를 만들어 클라이언트에 전달해주는 역할을 한다. 즉, 서버에서 구동된다. 클라이언트 사이드 템플릿 엔진은 HTML 형태로 코드를 작성할 수 있으며 동적으로 DOM을 그리게 해주는 역할을 한다. 즉, 데이터를 받아 DOM 객체에 동적으로 그려주는 프로세스를 담당한다. 즉, 브라우저 위에서 작동된다. 머스테치란? 머스테치는 ..
JPA를 사용한 게시판 구현(2) - 등록/수정/조회 API 만들기
·
혼자하는 프로젝트/스프링 부트로 구현한 웹
https://product.kyobobook.co.kr/detail/S000001019679 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 | 이동욱 - 교보문고 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 | 가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현합니다 product.kyobobook.co.kr 클래스 이해 API를 만들기 위해 총 3개의 클래스가 필요하다. Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service Spring 웹 계층 Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freema..