<aside>
🔐 스프링 시큐리티를 사용해 회원관리하는 방법을 순서도를 통해 정리해 보세요.
</aside>
-
회원가입

- Client → Server
- 회원가입에 필요한 정보 (username, password, email 등)
- Server
- 회원가입 처리
- 중복 회원 ID 확인
- 패스워드 암호화
- 회원 역할 설정 (USER, ADMIN)
- Server → DB
- 회원정보 DB 에 저장
-
로그인

- Client → Server
- 로그인에 필요한 정보 (username, password)
- Server
- 로그인 처리
- 회원 DB 에서 username 을 가진 회원정보 가져옴
- 회원 정보가 없으면 에러 발생
- 회원 DB 의 username, password 와 Client 에서 전달받은 username, password 가 동일한지 비교
- Server → Session
- 로그인 성공 시 Session 에 저장
- Server → Client
- Session 쿠키 전달 (JSESSIONID)
- Client
- Session 쿠키 저장
-
로그인 이후 로그인 상태 유지 방법

- Client 에서 Server 에 API 요청할때마다 Session 쿠키를 전달
<aside>
🔐 단위 테스트 코드 작성 시 장/단점을 정리해 보세요.
</aside>
<aside>
🔐 AOP(**Aspect Oriented Programming)**란 무엇인가?
</aside>
AOP
는 스프링의 가장 중요한 세 가지 특징인 IoC(제어의 역전)
, DI(의존성 삽입)
, AOP(관점 지향 프로그래밍)
중 하나. 관점 지향 프로그래밍은 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법.
- 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 본다는 말이고 따라서 관점을 기준으로 각각 모듈화하는 프로그래밍 기법
- 핵심기능 : 각 API 별 수행해야 할 비즈니스 로직 ex) 상품 키워드 검색, 관심상품 등록, 회원 가입, 관심상품에 폴더 추가 등 ....
- 부가기능 : 핵심기능을 보조하는 기능 ex) 데이터베이스 연결, 파일 입출력, 회원 패턴 분석을 위한 로그 기록, API 수행시간 저장 등
- 모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것
AOP
는 OOP
를 대신하는 새로운 개념이 아니라, ****기존 OOP
를 더욱 보완, 확장하여 OOP
를 OOP
답게 사용할 수 있도록 도와주는 개념 (OOP(Object-oriented Programming란 객체 지향 프로그래밍)과 나란히 하는, 서로 보완관계에 있는 기술)
<aside>
🔐 @Transactional이란 무엇인가?
</aside>
- 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션(Transaction) 이다.
- 트랜잭션은 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다. 그래서 트랜잭션은 commit으로 성공 하거나 rollback으로 실패 이후 취소되어야 한다. 하지만 모든 트랜잭션이 동일한 것은 아니고 속성에 따라 동작 방식을 다르게 해줄 수 있다.
- 위에서 설명한 것과 마찬가지로 트랜잭션의 마무리 작업으로는 크게 2가지가 있다.
- 트랜잭션 커밋: 작업이 마무리 됨
- 트랜잭션 롤백: 작업을 취소하고 이전의 상태로 돌림
- 만약 여러 작업이 모두 마무리 되었다면 트랜잭션 커밋을 통해 작업이 마무리되었음을 알려주어 반영해야 하며, 만약 문제가 생겼다면 작업 취소를 위해 트랜잭션 롤백 처리를 해주어야 한다.
<aside>
🔐 WAS란 무엇인가? Web Server와 차이점은 무엇인가?
</aside>
