
들어가기 전 설명 현재 구현한 코드들은 GitHub 에 있습니다. 글을 보다가 헷갈리시면 소스코드로 참고해 주시기 바랍니다. 개발 환경 JAVA17Spring Boot 3.1.8Spring Security 6.1.6Spring JPA 3.1.8Mac OSJAVA JWT 4.4.0IntelliJ 2024.01.04v 작업 순서 로그인 인증 필터 (AuthenticationFilter) 구현실제 인증 로직 (AuthenticationProvider) 구현 UserDetailsService DB 로직 구현SecurityConfig 설정JWT 모듈인 JwtHelper 제작인증 성공 시 실행하는 핸들러 (AuthenticationSuccessHandler) 구현인증 실패 시 실행하는 핸들러 (Aut..

들어가기 전 설명 현재 구현한 코드들은 GitHub 에 있습니다. 글을 보다가 헷갈리시면 소스코드로 참고해주시기 바랍니다. 개발 환경 JAVA17Spring Boot 3.1.8Spring Security 6.1.6Spring JPA 3.1.8Mac OSJAVA JWT 4.4.0IntelliJ 2024.01.04v 작업 순서와 프로젝트 구조 작업 순서Security Config 설정DB 연결Entity와 Model회원가입 비즈니스 로직예외처리결과 프로젝트 구조security│├── api│ └── UserController│├── config│ ├── SecurityConfig│ └── WebConfig│├── domain│ ├── User│ └── UserRole│├── ..

이해 목적 실무에서 사용하다가 요구사항으로 인한 변경, 갑자기 터지는 이슈를 내부 구조를 알아야 대응하기 쉬워집니다.그래서 옵셔널 한 이 시큐리티를 깊게를 할 필요는 없지만 내부 구조 정도는 알아야 한다고 생각합니다.이 글을 외우지 말고 간단한 이해만 시켜보도록 하겠습니다. 아키텍처 크게 본 구조 공식문서에 있는 그대로 설명할 것입니다. https://docs.spring.io/spring-security/reference/servlet/architecture.html#servlet-filters-review Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the Secu..

프록시 패턴이란? 대상 원본 객체를 대리(대신) 처리하게 함으로써 로직의 흐름을 제어하는 구조패턴입니다.이 프록시를 통해서 크게 2가지인 접근 제어 (권한에 따른 접근 차단, 캐싱, 지연 로딩) , 부가 기능 추가 일을 할 수 있습니다. 프록시 패턴 vs 데코레이션 패턴 두 패턴 모두 둘 다 프록시를 사용한다는 공통점이 있지만 이 둘의 의도(intent)에 따라서 구분됩니다.이번 배울 프록시 패턴은 접근 제어가 목적이며 데코레이터 새로운 기능, 부가 기능 추가가 목적입니다. 프록시 패턴의 구성요소 프록시 패턴은 다음과 같은 구성요소로 이루어져 있습니다. 실제 주체 (Real Subject) : 원본 대상 객체주체 (Subject) : Proxy와 RealSubject를 하나로 묶는 인터페이스프..

전략 패턴이란? 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며, 동적으로 전략 수정이 가능한 패턴입니다.풀어서 설명한다면, 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있는 패턴입니다. 전략 패턴 vs 템플릿 메서드 패턴 두 패턴 모두 알고리즘을 실행(런타임) 중에 알고리즘을 동적으로 적용한다는 공통점이 있지만이번 배울 전략 패턴은 합성(composition)을 통해 해결하고 템플릿 메서드 패턴은 상속(inheritance)을 통해 해결합니다. 이해하기 쉽게 말하면 전략 패턴은 Interface를 의존하여 OCP인 개방 폐쇄 원칙을 잘 지키며 앞으로도 많이 사용될 디자인 패턴이지만 템플릿 메서드 패턴은 부모 클래스를 상속받아 부모 클래스의 코드..

템플릿 메서드 패턴이란? 템플릿 메서드 패턴을 객체지향 디자인 패턴 중 하나로, 기능의 뼈대(템플릿)와 실제 구현을 분리하는 패턴입니다.즉, 상위 클래스(추상 클래스)에서 알고리즘 골격을 정의하고 하위 클래스 (상속 받은 클래스)에서는 알고리즘의 특정 단계를 재정의할 수 있는 것입니다. 아래 [그림1] 은 템플릿 메서드를 보여주고자 하였고 왼쪽은 기본틀이며, 오른쪽은 제가 설명하기 위해 예시로 만든 틀입니다. 들어가기 전 단어 알기 훅 메서드 (hook method)추상 클래스에서 추상 메서드로 선언하며, 기본 구현만 제공하는 메서드입니다.이제 하위 (구현, 자식) 클래스에서 추상 메서드를 오버라이딩하여 사용할 수 있습니다. 템플릿 메서드 특징 템플릿 메서드 패턴은 다음과 같은 특징을 가..

목차1. ThreadLocal 특징2. ThreadLocal 주요 메서드3. ThreadLocal 예제 코드 4. ThreadLocal 실무 주의 사항5. 주의 사항 문제 해결 ThreadLocal은 무엇인가? 우선 Thread(스레드)는 프로세스 내에서 실행되는 흐름의 단위를 뜻합니다.즉, 하나의 프로세스 내에서 동작하는 여러 실행 흐름 중 하나인 것입니다. ThreadLocal의 뜻은 "스레드 별로 독립적인 데이터를 관리하기 위한 클래스"라고 말할 수 있습니다.이것을 풀어 해석하면, 각 Thread마다 별도의 데이터 저장 공간을 가지며, 한 Thread에서 저장한 데이터는 다른 Thread에서 접근할 수 없는 것입니다. ThreadLocal의 특징 ..

개발 환경 Spring Boot 3.2.4 JAVA 17 MacOS Postman v10.22 해당 블로그 코드들은 GitHub에 남겨져 있습니다. ArgumentResolver를 사용하는 이유 컨트롤러에서 매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직등이 있을 경우, 중복 코드를 줄이고 공통 기능으로 추출하여 사용하려고 쓴다. 그래서 컨트롤러(핸들러)가 필요로 하는 다양한 파라미터의 값(객체)을 생성할 수 있다. 즉, 커스텀해서 내가 원하는 파라미터(객체)로 변경해서 컨트롤러에서 편하게 사용할 수 있다는 것이다. Tip) Resolver에서 처리할 수 있는 파라미터 목록들 https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-c..

개발 환경 Spring Boot 2.5.1JAVA 11 먼저 성공하는 것을 알려주고 에러, 바인딩 실패하는 사례도 보여주겠습니다. 작성하는 이유 우린 데이터를 Front → Back 으로 보낼 때 json형식의 String만 보내는 것이 아닌 데이터 + 첨부파일을 함께 전송할 때가 많다.. 그것도 여러 데이터 + 여러 첨부파일.. 태그를 이용하여 서버로 전송하면 좋겠지만 클라이언트(Front) 단에서는 ajax, Fetch에서 FormData 라는 객체를 생성하여 데이터를 보낸다. 그래서 서버가 그 데이터를 받을 때 여러 시도 하지 말라고 작성하게 되었다. 코드 index.htmlajax와 bootstrap은 cdn으로 넣어서 ..

개발 환경 Spring Boot 3.2.2 JAVA 17 ES6 MacOS Postman v10.22 해당 블로그 코드들은 GitHub에 남겨져 있습니다. 작성하게된 이유 데이터 유효성 검사를 Front단 에만 쳐 내는 것이 아닌 Back단 에서도 유효성 검사를 해서 막아야합니다. 근데 실무에서는 관리자만 사용하는 웹 어플리케이션 ( CMS 라 칭함 )을 만들었기 때문에 사용자가 악용할 일이 없어서 배제해 왔지만 플랫폼처럼 서비스 하기 위해서는 이제는 Back단에서도 유효성 검사를 해야겠다고 생각했습니다. 또한, 클라이언트에서 언제든지 데이터 값을 변경하여 백엔드에게 전송할 수 있기 때문에 필수적으로 Validation을 알아야한다고 생각했습니다. 조건 이름, 휴대폰 번호, 이메일은 필수 값입니다. 휴대..
- Total
- Today
- Yesterday
- 프로세스
- 계단 오르기
- 템플릿
- AJAX
- 오라클
- 개발자
- 코딩테스트
- JavaScript
- 개발블로그
- 깃허브 액션
- jvm
- DBeaver
- 로그
- spring
- 디자인패턴
- Front
- Cors
- 트랜잭션
- 데이터 베이스
- 인증
- 실시간 채팅
- 비동기
- 네트워크
- 개발
- 프론트
- java
- Spring Security
- Fetch
- aws
- 개발환경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |