인증/인가 API - ExceptionTranslationFilter ExceptionTranslationFilter는 두 가지 예외를 처리하는 필터이다. (1) AuthenticationException - 인증 예외 처리 AuthenticationEntryPoint 호출 로그인 페이지 이동, 401 오큐 코드 전달 등 인증 예외가 발생하기 전의 요청 정보를 저장한다. RequestCache - 사용자의 이전 요청 정보를 세션에 저장 SavedRequest - 사용자가 요청했던 request 파라미터 값들이나 헤더값들이 저장되어 있다. (2) AccessDeniedException - 인가 예외 처리 AccessDenideHandler에서 예외 처리하도록 제공한다. (1) 사용자가 /user에 접근한다..
인가 API - 권한 설정과 표현식 권한 설정은 선언적 방식과 동적 방식으로 나눌 수 있다. 선언적 방식 URL - http.antMatchers("/users/**").hasRole("USER") Method - @PreAuthroize("hasRole(`USER`)") 동적 방식 - DB 연동 프로그래밍 @Override protected void configure(HttpSecurity http) throws Exception { //인가정책 http .antMatcher("/shop/**") .authorizeRequests() .antMatchers("/shop/login", "/shop/users/**").permitAll() .antMatchers("/shop/user").hasRole("U..
인증 API - SessionManagementFilter 1. 세션 관리 - 인증 시 사용자의 세션 정보르 등록, 조회, 삭제 등의 세션 이력을 관리 2. 동시적 세션 제어 - 동일 계정으로 접속이 허용되는 최대 세션수를 제한 3. 세션 고정 보호 - 인증 할 때마다 세션쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지 4. 세션 생성 정책 - Always, If_Required, Never, Stateless 인증 API - ConcurrentSessionFilter - 매 요청 마다 현재 사용자의 세션 만료 여부 체크 - 세션이 만료되었을 경우 즉시 만료 처리 - session.isExpired() 값이 true이면 로그아웃 처리하고 즉시 오류페이지를 응답한다. 기존 세션 만료가 default로 설정..
개방/폐쇄 원칙 (Open/Closed Principle - OCP) 1. 특정 입출금 내역을 검색할 수 있는 기능. 예를 들어 주어진 날짜 범위 또는 특정 범주의 입출금 내역 얻기 2. 검색 결과의 요약 통계를 텍스트, HTML 등 다양한 형식으로 만들기 책을 중간에 읽으면서 어떤 내용이 나올지 예상이 돼서 기뻤다. 이거 이렇게 하면 될 거 같은데?라고 생각했는데 실제로 책에서 그렇게 하니까 진짜 기뻤다.. 기능이 추가될 때 항상 의문이 드는건 이 메서드를 어디에 정의해야 할까?인데 새 클래스를 만드는 것도 좋지만 새로운 클래스를 계속 만들수록 코드는 복잡해지고 여러 이름이 생기면서 다양한 동작 간의 관계를 이해하기가 어려우므로 처리 기능을 담당하는 이미 만들었던 BankTransactionProces..
결합도 코드를 구현할 때 고려해야 할 또 다른 중요한 특성으로 결합도가 있다. 응집도는 클래스, 패키지, 메서드 등의 동작이 얼마나 관련되어 있는가인 반면 결합도는 한 기능이 다른 클래스에 얼마나 의존하고 있는지를 가늠한다. 결합도는 클래스를 구현하는데 얼마나 다른 클래스를 참조했는가로 말할 수 있다. 많은 클래스를 참조하고 있다면 기능을 변경할 때 그만큼 유연성이 떨어진다. 결합도는 코드가 서로 어떻게 의존하는지와 관련이 있는 척도다. 예제에서 BankStatementAnalyzer는 BankStatementCSVParser 클래스에 의존한다. 그럼 어떻게 결합도를 낮출 수 있을까? 인터페이스를 이용하면된다. 인터페이스를 이용하면 요구사항이 바뀌더라도 유연성을 유지할 수 있다. 입출금 내역을 파싱하는 ..
응집도 응집도는 클래스나 메서드의 책임이 서로 얼마나 강하게 연결되어 있는지를 측정한다. 즉 어떤 것이 여기저기에 모두 속해있는지를 말한다. 이전 리팩터링 코드에서 BankStatementCSVParser의 응집도는 높다. 이 클래스에서 CSV 데이터 파싱 작업과 관련된 두 메서드를 한 그룹으로 만들었기 때문이다. 계산 연산을 하는 BankStatementProcessor라는 별도의 클래스를 추출해보자. public class BankStatementProcessor { private final List bankTransactions; public BankStatementProcessor(final List bankTransactions) { this.bankTransactions = bankTransa..
목표 단일 책임 원칙 (single responsibility principle) 줄여서 SRP KISS 원칙 CSV 파일을 읽어서 요구사항 구현하기 은행 입출금 내역의 총 수입과 총 지출 구하기 결과가 양수? 음수? 특정 달엔 몇 건의 입출금 내역 발생? 지출이 가장 높은 상위 10건? 돈을 가장 많이 소비하는 항목? 30-01-2017,-100,Deliveroo 30-01-2017,-50,Tesco 01-02-2017,6000,Salary 02-02-2017,2000,Royalties 02-02-2017,-4000,Rent 03-02-2017,3000,Tesco 05-02-2017,-30,Cinema KISS (Keep it short and simple!) 원칙을 이용해 일단 만들어보자. 응용프로그..
- Total
- Today
- Yesterday
- maven
- svn
- Spring
- window
- docker
- Spring Security
- Bash tab
- elasticsearch
- LocalDateTime
- LocalDate
- Github Status
- mybatis
- Kotlin
- springboot
- intellij
- oracle
- Java
- jQuery
- 베리 심플
- 오라클
- 북리뷰
- mybatis config
- config-location
- JavaScript
- Linux
- Mac
- k8s
- rocky
- localtime
- input
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |