본문 바로가기

반응형

Server Programming/Spring Boot Backend Programming

(46)
8장 -5. 소셜 로그인 처리 (+ OAuth2, 토큰, REST API 키, 인가코드) 요구사항 OAuth2를 이용한 소셜 로그인 처리 OAuth2 : 외부 서비스로 소셜 로그인을 이용해 사용자 연동 처리를 하는 프로토콜 프로젝트를 위한 설정 카카오 로그인을 위한 설정 OAuth2가 카카오 소셜 로그인을 처리하는 과정 소셜 로그인 후처리 1. 카카오 로그인을 위한 설정 애플리케이션 등록 : https://developers.kakao.com/ 등록한 애플리케이션에 생성된 REST API 키 복사 플랫폼 : Web, 사이트 도메인 : http://localhost:8080 설정 Redirect URI 지정 : http://localhost:8080/login/oauth2/code/kakao 로그인 활성화 후, 카카오 로그인 보안 항목에서 'Client Secret'으로 생성한 키 복사 2. ..
8장 -4. 회원 가입 처리 요구사항 직접 회원가입 소셜 로그인 기존 가입된 회원이면 해당 이메일을 이용해 로그인 기존 가입된 회원이 아니면, 소셜 로그인의 정보를 이용한 간편 회원가입 회원 가입 기능 구현 GET 방식 : 회원가입 페이지 POST 방식 : 회원가입 데이터를 전달해 DB에 추가 GET 방식 화면 출력 -> POST 방식으로 데이터 전달 -> 목록 페이지로 이동 회원 가입 구현 순서 DTO 컨트롤러 화면 서비스 시큐리티의 DTO와 회원가입 전용 DTO 시큐리티가 사용하는 DTO : User UserDetails를 구현한 User클래스를 상속하는 DTO 회원가입 전용 DTO : MemberJoinDTO 작성 1. 회원가입 전용 DTO인 MemberJoinDTO 작성 package org.zerock.b01.dto; im..
8장-3. 회원 데이터 처리 (+ UserDetailsService, enum, MSA) 요구사항 Spring Data JPA로 회원 데이터 구성 UserDetailsService를 이용해 사용자 정보 로딩 @ElementCollection을 이용해 여러 개의 권한을 갖는 회원 엔티티 구성 회원 데이터의 구성 mid 회원 아이디 del 탈퇴여부 mpw 패스워드 regDate, modDate 등록일/수정일 email 이메일 social 소셜 로그인 자동 회원 가입 여부 1. Spring Data JPA로 회원 데이터 구성 1. MemberRole enum 클래스로 이용해 사용자의 두 가지 권한 설정 package org.zerock.b01.domain; public enum MemberRole { USER, ADMIN; } 2. Member 엔티티 작성 엔티티 명 : Member 멤버 변수 :..
8장-2. 로그아웃과 자동 로그인 처리 (+ 인증된 사용자 처리, currentUser, AccessDeniedHandler) 요구사항 로그아웃 자동 로그인 컨트롤러와 화면에서 인증처리 로그인 유무와 권한에 따른 제어 컨트롤러 인증된 정보 활용하는 경우의 처리 로그아웃 스프링 시큐리티는 HttpSession을 이용해 로그인을 수행하기 때문에 쿠키를 삭제하게 된다면 세션이 종료되고, 자동으로 로그아웃 로그인부터 로그아웃까지 동작 과정 입력한 아이디로 해당 아이디의 사용자 정보를 가져온다. 가져온 사용자의 비밀번호와 입력한 비밀번호가 일치하면 세션을 성립하고, 인증(로그인) 처리한다. 쿠키를 삭제하면 성립한 세션이 종료되고 자동으로 로그아웃처리가 된다. CSRF 토큰을 사용하지 않는 경우 GET방식의 로그아웃 처리가 가능 (1) GET방식의 로그인 메서드에서 로그아웃 여부 확인 - '/logout' 경로 호출시 -> 'login?l..
8장-1. 스프링 시큐리티 (+ SecurityFilterChain, webSecurityCustomizer(), @EnableGlobalMethodSecurity, CSRF 토큰) 목적 로그인, 세션 트래킹 스프링 이전 HttpSession, Cookie 스프링 적용 스프링 시큐리티 스프링 시큐리티 중 Spring Web Security에 구현되어있는 기능 로그인 자동 로그인 로그인 후 페이지 이동 그 외, HttpSession과 Cookie로 구현했던 기능들을 자동으로 처리 스프링 시큐리티 기본 설정 경로 제외 설정 로그 레벨 설정 정적 자원 필터 제외 1. 의존성 추가 //스프링 웹 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security' 2. 스프링 시큐리티 설정 스프링 시큐리티 설정의 경우 application.properties 설정보다 자바 코드를 이용하는 경우가 많다. 따라서 별도의 Conf..
7장-5. 이미지 추가를 위한 컨트롤러와 화면 처리 (+ 파일명에 언더바가 들어간 경우 에러 발생) 요구사항 기능 설명 게시물 등록 모달창으로 파일 등록, 추가된 파일은 섬네일로 표시 파일의 삭제시 업로드된 파일도 함께 삭제 게시물 목록 게시물과 함께 파일을 목록상에 출력 게시물 조회 해당 게시물에 속한 모든 파일 함께 출력 게시물 수정 게시물 조회 기능 파일 삭제는 일단 화면에서만 안 보이도록 처리, 실제 파일 삭제는 수정 작업 처리시에 파일도 함께 처리 게시물 삭제 해당 게시물 삭제 + 업로드된 모든 파일 삭제 이미지 추가를 위한 등록 처리 요구사항 모달창을 이용해 파일 업로드 처리 업로드한 파일 섬네일로 표시 업로드한 파일 삭제 처리 태그의 submit함수가 아니라 자바스크립트를 활용해 Ajax를 적용 태그 자체에 id 속성을 부여해 자바스크립트 처리시 사용한다. 파일 업로드를 위한 모달창을 위해..
7장-4. 이전 프로젝트에 이미지 추가 이전 프로젝트에 이미지 추가 DTO 목록 처리 검색 조건 처리 게시물 CRUD 컨트롤러와 화면 처리 1. 화면에 출력되는 최종 DTO 작성 : BoardDTO -> BoardListReplyDTO = BoardDTO + BoardListReplyCount -> BoardListAllDTO = BoardListReplyDTO + BoardImageDTO (1) BoardImage 엔티티를 위한 BoardImageDTO 작성 package org.zerock.b01.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @Builder @NoArgs..
7장-3. 일대다 연관관계의 N+1 문제와 @BatchSize 요구사항 @BatchSize : N+1 문제의 해결 Tuple 이용 : 중첩된 엔티티 객체를 DTO로 변환하는 방식 N+1 문제의 발생 충분히 많은 데이터가 존재하는 경우 목록을 처리하는 과정에서 'N+1'문제가 발생할 수 있다. (1) 더미 데이터 추가 -Board, BoardImage, Reply에 더미 데이터 추가 //N+1문제 발생을 위해 더미데이터 추가 @Test public void testInsertAll() { for (int i = 1; i { System.out.println(board1.getBno()); System.out.println(board1.getImageSet()); System.out.println("----------"); }); return null; } (3) 테스..

반응형