일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드스쿼드
- 마스터즈 2주차 회고
- 박재성
- spring-boot
- 2021.01.14
- 2021.01.06
- java
- 알고리즘
- baekjoon1541
- 2021.01.13
- 2020.01.08
- 2021.01.17
- 2021.01.21
- 쉽게 배우는 운영체제
- Til
- 괄호
- 백준 1149
- 코드스쿼드 마스터즈
- 자바
- 백준
- 2021.01.12
- 알고리즘데이
- 백준 9093
- algorithm
- 잃어버린 괄호
- 2021.01.18
- SWEA
- 2021.01.22
- 2021.01.19
- 2021.01.11
- Today
- Total
Cooper's devlog
5-4. 수정/삭제 기능에 대한 보안 처리 및 LocalDateTime 설정 본문
1. 강의 링크
https://www.youtube.com/watch?v=UMEmYw7EJ7g&list=PLqaSEyuwXkSppQAjwjXZgKkjWbFoUdNXC&index=43
2. 학습 목표
1. 수정 기능 구현
2. 삭제 기능 구현
3. 보안 처리
4. LocalDateTime 설정
3. 과정
1. 예외 처리를 이용 타인 수정/삭제 기능 방지
-
기존 구현의 결함 : 타인의 수정/삭제 가능 여부
- 진행 구현 방식 : 타인 수정/삭제 기능 방지 코드 작성
(1) updateForm(questionController) 수정
- 조건문1 : LoginUser session 일치 여부 확인
- 조건문2 : question 작성자와 일치 여부 확인
(※팁! : model.model.addAttribute("question", questionquestionRepository.findById(id).get()); 부분 드래그 → 마우스 우클릭 → source → extract local variable클릭 시, 지역 변수 형태로 자동 생성(refactoring) 기능)
(2) delete(questionController) 수정
- 조건문1 : LoginUser의 session 일치 여부 확인
- 조건문2 : question의 작성자와 일치 여부 확인
2. isSameWriter 내용 구현 (Question)
(1) isSameWriter 구현
- isSameWriter : question 객체 내에서 method 구현으로 get&set method 최소화(refactoring)
(2) equals override
- eqauls : 두 인스턴스가 같은지를 확인하는 메소드.
- (객체는 기본적으로 다르기 때문에 객체를 비교하면 무조건 false)
- equals overriding : 객체 안의 값이 같으면 같은 객체로 인식하도록 하도록 재정의.
- (참고 ref : https://meaownworld.tistory.com/80)
(※중요! : 마우스 우클릭 → source → Generate hashCode() & equals클릭 → 일치 여부 필드 값 지정 후, 확인)
3. create_time(question table) date type 변경 : binary → timestamp
- 기본적인 data type이 binary로 설정되어 timestamp으로 변경해주고자 한다.
- (springboot 2.1.5 ver부터 timestamp로 자동으로 설정되어 테이블 설정해주고 있다.)
(1) net.slipp / LocalDateTimeConverter.class 생성
(2) LocaldateTimeConverter를 AttributeConverter.inteface를 implements 받아 Override
- springboot가 converter부분 인식 : localdatetime일 때, timestamp로 변경해주는 기능을 한다.
(3) 변경 사항 확인(http://localhost:XXXX/h2-console/)
'Programming > Spring-boot' 카테고리의 다른 글
5-6. QuestionController 중복 코드 제거 리팩토링 (0) | 2020.07.23 |
---|---|
5-5. 답변 추가 및 목록 기능 구현 (0) | 2020.07.23 |
5-3. 질문 수정, 삭제 기능 구현 (0) | 2020.07.21 |
5-2. 질문 상세보기 기능 (0) | 2020.07.21 |
5-1. 회원과 질문간의 관계 매핑 및 생성일 추가 (0) | 2020.07.21 |