루트 유저⦁ 생성한 계정의 모든 권한을 자동으로 가지고 있음⦁ 생성시 만든 이메일 주소로 로그인⦁ 탈취당했을 때 복구가 매우 힘듬 : 사용을 자제하고 MFA 설정 필요⦁ 루트 유저는 관리용으로만 이용 : 계정 설정 변경, 빌링 등⦁ AWS API 호출 불가 IAM 유저 ⦁ IAM(Identify and Access Management) 을 통해 생성한 유저 ⦁ 만들 때 주어진 아이디로 로그인 ⦁ 기본 권한 없음 ; 따로 권한을 부여해야 함 ⦁ 꼭 사람이 아닌 어플리케이션 등의 가상의 주체를 대표할 수도 있음 ⦁ AWS API 호출 가능 ⦁ AWS의 관리를 제외한 모든 작업은 관리용 IAM User 를 만들어 사용 ⦁ 권한 부여시 루트 유저와 같이 모든 권한을 가질 수 있지만 빌링 관련 권..
SpringBoot
build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-jpa'runtimeOnly 'com.mysql:mysql-connector-j' application.propertiesspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://[ip주소]:3306/[데이터베이스명]?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoulspring.datasource.username=사용자명spring.datasource.password=비밀번호spring.jpa.show-s..
JPA 의 Specification 인터페이스 사용(Specification 은 쿼리를 보다 정교하게 작성할 수 있도록 도와주는 JPA 도구) QuestionService 에 다음 코드 추가 QuestionRepository 에 다음 코드 추가 QuestionService 에서 getList 메소드 수정 QuestionController 에서도 getList 메소드의 입력 항목이 변경되었으므로 수정
1. 회원가입 기능 구현회원 가입 기능을 구현하기 위해서는 회원 정보에 관한 데이터를 저장하고 관리하는 엔티티와 리포지터리, 서비스, 폼 등이 필요하다. 서비스에서 비밀번호는 보안을 위해 BCryptPasswordEncoder 클래스를 사용하여 저장했는데 객체를 직접 new 로 생성하는 방식보다는 PasswordEncoder 객체를 빈으로 등록해서 사용하는 것이 좋다고 한다.(만약 암호화 방식을 변경하면 BCryptPasswordEncoder 를 사용한 모든 프로그램에서 수정해야하기 때문에) 따라서 다음과 같이 SecurityConfig.java 파일에 PasswordEncoder 객체를 빈으로 등록하고 다시 서비스에서 new 로 객체를 생성했던 부분을 삭제하고 형광색부분을 추가해주었다. ..
1. 게시물에 번호 지정하기 ▼게시물 번호 공식 게시물 번호 = 전체 게시물 개수 - (현재 페이지 * 페이지당 게시물 개수) - 나열 인덱스 만약 게시물이 12개이고 한 페이지에 보여지는 게시물이 10개면1페이지에는 12, 11, 10, 9, 8, 7, 6, 5, 4, 3 번의 게시물이 보여야하고0페이지에는 2, 1 번의 게시물이 보여야 한다. 2. 답변 개수 표시하기 다음과 같이 question_list 에 코드를 추가하면 게시물 옆에 답변의 개수가 출력된다. 3. 스프링 시큐리티 설정하기 스프링 시큐리티란 회원가입과 로그인을 도와주는 프레임워크이다. 스프링 시큐리티를 사용하기 위해 다음과 같이 build.gradle 파일을 수정한다.형광색 부분의 코드를 삽입하고 refresh 한 다음 다시..
1. 공통 템플릿 만들기 오류 메시지를 출력하는 HTML 코드는 질문 등록과 답변 등록 페이지에서 모두 반복해서 사용하는데이 때 중복되는 코드를 하나의 공통 템플릿으로 사용해보려고 한다. ▼질문등록 페이지에서 수정 ▼답변등록 페이지에서 수정 2. 내비게이션 바 추가하기내비게이션 바는 화면 위쪽에 고정되어 있는 부트스트랩의 컴포넌트 중 하나이다내비게이션 바는 모든 페이지에서 공통적으로 보여야 하므로 다음과 같이 layout.html 템플릿에 내용을 추가하였다. 내용을 추가하고 다시 실행한 결과 아래 그림과 같이 내비게이션 바가 생성된 것을 알 수 있다. 하지만 브라우저의 가로 사이즈를 줄였을 때 아래 그림과 같이 햄버거 메뉴 버튼이 생성되고 로그인 버튼이 사라진 것을 알 수 있는데이 ..
MVC : 유지보수가 편해지는 코드 구성 방식 Model은 데이터와 관련된 일을 하는 곳 Controller는 Model 과 View의 중개자 역할을 하는 곳View는 사용자한테 보여지는 부분을 담당하는 곳▶MVC 를 지키면서 코딩하는 방법 1. Model은 Controller 와 View 에 의존하지 않아야 한다.(Model 내부에 Controller와 View에 관련된 코드가 있으면 안 된다.) Model은 데이터와 관련된 부분이다보니 언제든 깔끔하고 정제된 데이터를 꺼내 쓸 수 있게 View나 Controller에 코드를 섞어서 넣지 않고 데이터에 관련된 코드만 넣으려고 한다. 2. View는 Model에만 의존해야 하고 Controller에는 의존하면 안 된다.(View 내부에 Mod..
서버의 URL 을 요청할 때 도메인명 뒤에 아무런 주소도 덧붙이지 않는 URL 을 루트 URL 이라고 한다.루트 URL 을 요청했을 때 보여지는 페이지를 메인 페이지라고 한다. 즉 http://localhost:8080 을 입력했을 때 http://localhost:8080/question/list 로 이동해야한다. 그렇게 하기 위해서는 MainController.java 의 파일을 다음과 같이 수정해야한다. 다음 코드에서 redirect:/question/list 는 /question/list 로 페이지를 리다이렉트하라는 명령이다. 리다이렉트란 클라이언트가 요청하면 새로운 URL로 전송하는 것을 의미한다.
우선 h2 란주로 개발 환경에서 사용하는 자바 기반의 경량 DBMS 개발 시에는 h2 데베를 사용하여 빠르게 개발하고 실제 운영 시스템에는 좀 더 규모 있는 DBMS( MySQL, 오라클 DB, MS SQL 등) 을 사용하는 것이 일반적이라고 한다. 1. build.gradle 파일에 다음과 같이 입력한다. 2. src/main/resources 디렉터리의 application.properties 파일에 다음과 같이 설정을 추가한다. 3. spring.datasource.url 을 jdbc:h2:~/local 로 설정했으므로 사용자 홈 디렉터리 아래에 local.mv.db 라는 파일을 생성해야 한다.C:\Users\사용자명 경로에서 새로만들기 → 텍스트 문서 → 다른 이름으로 저장 파일 이름 : l..