Framework
[LMS 만들기] 비밀번호 초기화 요청 및 메일 링크를 통한 초기화
| 비밀번호 정책에 대하여 - Spring Security의 BCrypt로 비밀번호를 암호화한 경우 원본 비밀번호는 찾을 수 없다. (보안 때문) - 이건 다른 언어를 사용한 경우에도 마찬가지인데, - 대다수의 사이트는 비밀번호를 못 찾으면, 원본 비번을 알려주지 않고 초기화를 하도록 되어 있다. - 오늘 수업에서는 메일 링크를 통해 비밀번호를 초기화하는 정책을 배웠는데, USE CASE 흐름은 다음과 같았다. [비밀번호 초기화 USE CASE] [1] 로그인 페이지에서, 비밀번호 찾기 페이지로 이동 [2] 비밀번호 찾기 페이지에서, 이름과 이메일을 작성후 전송(비밀번호 인증키 생성) --> 결과화면 [3] 본인 이메일에 비밀번호 재설정 페이지 링크가 날라감 [4] 24시간 내에 링크를 통해 비밀번호 재..
[LMS 만들기] 스프링 시큐러티를 이용한 로그인/로그아웃
| 스프링 시큐러티란? - 스프링 시큐러티란, 스프링 기반의 애플리케이션의 보안을 담당하는 하위 프레임워크로, Filter를 통해 인증과 권한을 처리한다. - HTTP URI를 통해 접근 가능한 경로를 제한할 수 있으며, 제한된 경로로 접속 시, user/password로 로그인을 함으로써 인증(Authentication) 후, 인가(Ahthorization)을 한다. - 보다 자세한 사항에 대해서는 아래의 블로그가 잘 설명하고 있는 것 같다. https://catsbi.oopy.io/c0a4f395-24b2-44e5-8eeb-275d19e2a536 스프링 시큐리티 기본 API및 Filter 이해 목차 catsbi.oopy.io | 스프링 시큐러티 사용해보기 1. dependency에 의존성 추가 org..
[LMS 만들기] 회원가입 페이지 만들기
| HTTP 요청/응답 사항 POST /member/register 파라미터 : 이메일, 비밀번호, 이름, 전화번호 정책 : - 프론트 : 이메일, 비밀번호, 이름, 전화번호 필수 정보가 입력되지 않은 경우, 이메일 형식이 맞지 않는 경우, 비밀번호 규칙이 다른 경우, 비밀번호 확인이 틀린 경우 체크 - 백엔드 : 동일한 아이디가 있는 경우, 실패 응답 [가입하기] 터치 후, 작성한 이메일로 메일 인증 성공 응답 : login-complete.html - Member 테이블 * 아래를 보면 jpa에 의해 db에 저장되는 방식이 camel -> snake로 변환되는 걸 볼 수 있다. db html(parameter) / spring 이메일 user_id userId 이름 user_name userName ..
[LMS 만들기] 스프링 컨트롤과 주소 매핑
| 스프링 컨트롤과 주소 매핑 - HTTP는 근본적으로 텍스트 기반으로 데이터를 송수신하는 일회성의 프로토콜이며, REST는 HTTP프로토콜로 자원에 대한 CRUD 요청을 하는 URI로 표현하는 기법을 말한다. - URI에 사용되는 주소는 보통 / 에 따라서 경로를 나누고 그 안에 디렉토리나 파일명, request 등을 작성하는데, 고전적인 프로그래밍 방식에서는 www.example.com/home/index.jsp 와 같이 파일 확장자가 그대로 드러났었다. - 그러나 오늘날엔 논리적인 주소를 사용해서 확장자를 숨긴다. (예를들어, 인프런의 멘토링 페이지는 https://www.inflearn.com/mentors 를 경로로 쓴다. 파일 확장자는 안 보인다.) - 스프링의 경우, Tymeleaf를 사용해..
[LSM 만들기] Maven 프로젝트 환경 보기
| 개요 - 오늘은 이클립스와 인텔리j에서 Maven 프로젝트를 만들어 본 뒤, - 인텔리j의 GUI를 통해 Maven의 clean과 packing을 동작시키는 걸 해보았다. - Maven 프로젝트 생성은 처음 해보는 거라 구조를 잘 기억하기 위해 정리해보려고 한다. 1. 인텔리j 우측의 [Maven] 탭 기능 내용 기능들 Lifecycle 더블 클릭으로 플러그인 실행 package : target 생성 clean : target 해제 * 내보낼 패키지들에 대한 target를 정하는 것 * 여기선 프로젝트 생성시 WAR 파일로 설정해서 war로 나감 Plugins 내장 플러그인에 대한 세부 기능 위계 - Dependencies 의존성을 확인할 수 있는 곳 - 2. 메이븐 프로젝트의 구조 Maven Gra..
[LSM 만들기] 스프링부트 프로젝트 생성하기
| 개요 - 수업에서 스프링부트로 LMS 프로젝트를 만들려고 한다. - 프로젝트 환경 설정을 하는 과정이 복잡해 보여서 정리를 하면서 따라가려고 한다. - 지금 정리하는 부분 이전에서는 LMS를 사용하는 사이트를 벤치마킹 해서 엑셀로 사용할 데이터를 정리한 후, ERD로 모델링을 했었다. - 오늘 하는 내용에서는 먼저 깃헙을 로컬 저장소에 연동하고, jdk/was/db를 설치한 후, 스프링부트를 통해 각 에디터에서 프로젝트를 생성하는 걸 해보려고 한다. Github 연동부터 DB 설치까지 - 지금 정리하는 부분은 JDBC 프로그래밍을 할 때- JDBC를 넣은 걸 빼고- 환경설정 방법과 거의 유사하다. - 실제 회사에서는 DB가 이미 있을 것이므로, SQL툴 또는 cmd를 통해 DB 계정으로 접근하면 될 ..
JPA란 무엇인가?
| JPA - JPA란, 자바에서 사용하는 ORM 기술 표준을 말한다. * ORM : 객체와 RDBMS를 매핑해주는 기술 - JPA는 인터페이스의 모음으로, Hinernate / EclipseLink / DataNucleus가 이 명세를 구현했다. | JPA를 왜 쓸까? 1. SQL 중심 개발 -> Object 중심 개발 2. 생산성 : 데이터의 CRUD가 훨씬 쉬워진다. 저장 : jpa.persist(entity) 조회 : jpa.find(pk) 수정 : entity.setName(" ") 삭제 : jpa.remove(entity) 3. 유지보수 : 필드 변경 시 모든 SQL 수정 --> 필드를 하나만 더 추가 4. 패러다임 불일치 해결 rf. 객체와 관계형 DB의 차이 객체 SQL 상속 객체 상속 관..
ORM 기술이란 무엇인가?
| 개요 - 영속성이란, 프로그램이 종료된 이후에도 한 번 처리한 데이터는 DB에 영구적으로 반영된 상태여야 함을 뜻한다. - 자바를 통해서 DB와 소통하는 방식은 다양한데, 그 중에서 Persistence Framework를 사용하면 Object를 통해 SQL문을 만들 수 있다. - Persistence Framework는 크게 1) SQL Mapper 2) ORM 으로 나뉠 수 있으며, 두번째 방식이 현재 가장 많이 사용되는 방식이다. [ 영속성이란? ] 영속성이란, 데이터를 생성한 프로그램이 종료된 후에도 사라지지 않는 데이터 특성 [ 출처 ] 위키백과 [ 자바에서 데이터를 저장하는 방법 ] - JDBC 프로그래밍 (순수 Java) - Spring JDBC - Persistence Framework..
[Validation] 데이터 검증, 비즈니스 로직 검증
| Validation - 지난 번 스프링을 처음 배울 당시 아래와 같이 Validation에 대한 개념을 배웠었다. ✅ Validation은 유효성 검증을 말하며, 주로 HTTP Request에서 잘못된 내용을 검증할 때 사용한다. - 데이터 검증 : 필수 데이터 / 문자열 길이 및 숫자형 데이터 범위 / 이메일 및 신용카드 번호 등 형식 확인 - 비즈니스 검증 : 서비스 정책에 따라 데이터 검증 ✅ Validation 방식 1) Java Bean Validation : dto클래스 맴버에 Annotaion(ex. @NotBlank, @Size, @Email...)을 붙이는 방식 2) Spring validator 인터페이스 구현을 통한 validation ✅ Validation 주의사항 : Valid..