일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ocp
- 오블완
- 의존관계
- 오버라이딩
- HttpServletResponse
- equals()
- 추상클래스
- fielderror
- 스프링컨테이너
- objecterror
- 다형성
- 백준
- 싱글톤
- 프록시
- java
- 코드트리조별과제
- 참조변수
- html form
- 스프링
- 서블릿
- 코드트리
- @configuration
- JSON
- 인터페이스
- 김영한
- 코딩테스트
- 테스트코드
- http 메시지 컨버터
- DI
- 티스토리챌린지
- Today
- Total
목록TIL (147)
minOS
로그인 처리하기 - 세션 동작 방식목표 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야 한다. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 한다.세션 동작 방식1)세션 로그인- 사용자가 `loginId` , `password` 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인한다. 2)세션 생성 ,세션 관리- 세션 ID를 생성하는데, 추정 불가능해야 한다.- UUID는 추정이 불가능하다. ex)`Cookie: mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61`- 생성된 세션 ID와 ..
로그인 요구사항- 홈 화면 - 로그인 전 ㄴ회원 가입 ㄴ로그인 - 홈 화면 - 로그인 후 ㄴ본인 이름(누구님 환영합니다.) ㄴ상품 관리 ㄴ로그 아웃 - 보안 요구사항 ㄴ로그인 사용자만 상품에 접근하고, 관리할 수 있음 ㄴ로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동- 회원 가입, 상품 관리 로그인 - 쿠키 사용쿼리 파라미터를 계속 유지하면서 보내는 것은 매우 어렵고 번거로운 작업이다. 쿠키를 사용해보자.쿠키서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달하자. 그러면 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키 종류- 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지- 세션 쿠키: 만료 날짜를 생략하면 브라우..
연결된 예외(chained exception)- 한 예외가 다른 에외를 발생시킬 수 있다.- 예외 A가 예외 B를 발생시키면, A는 B의 원인 예외(cause exception)Throwable initCause(Throwable cause) : 지정한 예외를 원인 예외로 등록Throwable getCause() : 원인 예외 반환 // 원인 예외를 초기화하는 메서드 (한 번만 호출 가능) public synchronized Throwable initCause(Throwable cause) { if (this.cause != null) { throw new IllegalStateException("Can't overwrite cause"); } ..
Bean Validation - groups동일한 모델 객체를 등록할 때와 수정할 때 각각 다르게 검증하는 방법을 알아보자.1) BeanValidation의 groups 기능을 사용한다. 2) Item을 직접 사용하지 않고, ItemSaveForm, ItemUpdateForm 같은 폼 전송을 위한 별도의 모델 객체를 만들 어서 사용한다. 1) BeanValidation의 groups 기능을 사용이런 문제를 해결하기 위해 Bean Validation은 groups라는 기능을 제공한다.예를 들어서 등록시에 검증할 기능과 수정시에 검증할 기능을 각각 그룹으로 나누어 적용할 수 있다. 저장용 groups 생성public interface SaveCheck {} 수정용 groups 생성public interfac..
오브젝트 오류Bean Validation에서 특정 필드( `FieldError` )가 아닌 해당 오브젝트 관련 오류( `ObjectError` )는 어떻게 처리할 수 있을까?`@ScriptAssert()` 를 사용하면 된다. @Data @ScriptAssert(lang = "javascript", script = "_this.price * _this.quantity >= 10000") public class Item {//...}실행해보면 정상 수행되는 것을 확인할 수 있다. 메시지 코드도 다음과 같이 생성된다. 메시지 코드`ScriptAssert.item``ScriptAssert`그런데 실제 사용해보면 제약이 많고 복잡하다. 그리고 실무에서는 검증 기능이 해당 객체의 범위를 넘어서는 경우들도 종종 등..
Bean Validation특정 필드에 대한 검증 로직은 대부분 빈 값인 지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다.검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; } 이런 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 Bean Va..