본문 바로가기

TIL

(40)
TIL 240625 Session Session이란- 서버에서 중요한 정보를 보관하며 로그인 연결을 유지하는 방법 Cookie는 중요한 정보를 Client측에서 보관하고 있는 것 Session의 동작 방식로그인에 성공하면 Server에서 임의로 만든 Session ID를 생성한다 - Session ID는 예측이 불가능해야 한다 - 이미 사용해보았던 UUID와 같은 값을 활용한다 생성된 Session ID와 조회한 User 인스턴스를 서버의 Session 저장소에 저장한다 - 서버에 유저와 관련된 중요한 정보를 저장한다  실제 동작방식1. 로그인결국 Session ID로 연결 상태유지를 위해 Cookie를 사용한다 - 서버는 클라이언트에 Set-Cookie : SessionId = 임의생성값 을 전달한다 - 클라이언트는 Cookie 저장소..
TIL 240624 Cookie Spring Security를 잘 이해하려면 Cookie, Session, Token(Json Web Token아님)부터 알아야한다 인증/인가Spring Filter → 굉장히 잘 사용한 경우(추상화 된 기술) Spring Security Cookie-웹 브라우저(크롬, 엣지, 파이어폭스 등)에서 사용자의 컴퓨터에 저장되는 정보- 이 정보는 서버에서 사용자의 브라우저로 전송되고, 브라우저는 해당 정보를 저장해두었다가 이후에 같은 서버에 요청을 보낼 때마다 함께 전송한다- 쿠키는 사용자의 상태나 세션을 유지하거나 사용자 경험을 개선하기 위해 사용된다 Response 예시set-cookie:sessionId=abcd;expires=Sat, 11-Dec-2023 00:00:00 GMT;path=/; domai..
TIL 240621 Validation Validation- Controller의 주요한 역할 중 하나- HTTP 요청이 정상인지 검증하는 것 Front 검증해당 검증은 유저가 조작할 수 있음으로 보안에 취약하다.Javascript를 이용한 Validation보안에 취약하지만 그럼에도 꼭 필요하다ex) 비밀번호에 특수문자가 포함되어야 한다면 즉각적인 alert 가능 → 유저 사용성 증가 Server 검증Front 검증없이 서버에서만 검증한다면 유저 사용성이 떨어진다.Front 검증과 적절히 섞어서 사용해야 한다.API Spec을 정의해서 Validation 오류를 Response 예시에 남겨주어야 한다.뉴스피드 프로젝트를 진행하며 API 명세서를 만든것은 좋은 경험이다.실제로 크게는 B2B 혹은 B2C 작게는 프론트 개발자와 백엔드 개발자 모..
TIL 240617 과제 피드백 AOP AOP  AOP란? 관점 지향 프로그래밍이다. 하나의 로직을 기준으로 공통 관심 사항(cross-cutting concern)과 핵심 관심 사항(core concern)으로 관점을 분리하여 이 관점들을 기준으로 모듈을 분리한다. AOP는 언제 사용하나?이번 과제 요구사항처럼, 모든 Controller에 Request 정보를 Log로 출력해야하는 상황이 있다면, 각각의 Controller마다 모두 Log를 추가해주어야 합니다.하지만 이런 경우1. 모든 Controller에 중복 코드를 작성해야 합니다.2. Log에 출력할 값을 변경하게 된다면 Controller 개수만큼 해당 코드를 수정해야 합니다. 예시 요구사항인 Controller는 절대적인 수가 적지만, 만약 이게 Service Method 단위였다..
TIL 240614 Mockito, 통합테스트 Mock object(가짜 객체)- 각 테스트 케이스는 서로 분리되어야 하는데 이를 위해 가짜 객체를 생성하는 것도 좋은 방법이다  2. 가짜 객체(Mock object)를 통한 분리방법가짜 객체(Mock object)로 분리MockRepository - 실제 객체와 겉만 같은 객체 - 동일한 클래스명, 함수명 - 실제 DB작업은 하지 않음 Mockito를 사용한 단위 테스트 구현Mockito framework : Mock 객체를 쉽게 만들 수 있는 방법을 제공 Mockito 적용 (ProductServiceTest)@ExtendWith(MockitoExtension.class) // @Mock 사용을 위해 설정합니다.class ProductServiceTest { @Mock ProductRe..
TIL 240613 단위 테스트 단위 테스트- 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법- 빠르게 작성할 수 있고 문제 발생 시 어느 부분이 잘 못 되었는지를 빠르고 정확하게 확인할 수 있다는 장점 JUnit5자바프로그래밍 언어용 단위 테스트 프레임워크  Before-After @BeforeEach // Generate -> SetupMethod@BeforeEachvoid setUp() { System.out.println("각각의 테스트 코드가 실행되기 전에 수행");}각각의 테스트 코드가 실행되기 전에 수행되는 메서드를 만들어 줍니다. @AfterEach@AfterEachvoid tearDown() { System.out.println("각각의 테스트 코드가 실행된 후에 수행");}각각의 테..
TIL 240612 카카오 로그인 OAuth를 사용한 소셜 로그인 - OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준- 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜 카카오 로그인의 큰 흐름 카카오 로그인을 사용하기 위해서는 카카오 개발 사이트에서 애플리케이션 등록이 필요'카카오 개발자' 사이트로 이동하여 회원가입을 진행, 본인만의 애플리케이션을 등록 1. 회원가입2. 내 애플리케이션 메뉴 선택-> 애플리케이션 추가하기3. 앱 아이콘, 앱 이름, 사업자명 저장4. 사이트 도메인 등록하기 (개발중인 로..
TIL 240611 3조 KPT 회고 Keep - 현재 만족하고 있는 부분튜터님의 피드백을 반영하여 프로젝트 전반에 걸쳐 일관된 예외 처리를 적용한 점팀원들과 어려운 상황에서도 웃으면서 대화하고 서로 격려하는 분위기를 유지한 점Problem - 불편하게 느끼는 부분예상보다 기능 구현하는데 많은 시간을 소모함으로써 주어진 시간을 잘 활용하지 못함기능 구현하면서 인증과 토큰에 대한 지식이 많이 부족해서 이해가 부족했음Try - Problem에 대한 해결책, 당장 실행 가능한 것더 섬세하게 일정 계획을 세우고 주기적으로 점검하여 일정 지연을 방지할 것부족한 기술에 대해 더 깊이 학습하고, 팀원간의 기술적 공유를 통해 더 발전할 것예외처리와 토큰, Security에 대해 더 학습하고 마스터 할 것뭐든 자신감을 가지고 할 것 Github 주소GitH..