오블완(15)
-
[인증] Session-based와 Token-based
Session-based와 Token-based 인증의 차이는 주로 인증 데이터를 저장하고 관리하는 방식과 그에 따른 동작 차이에 있다. Session-based Authentication (세션 기반 인증) 동작 방식사용자가 로그인하면 서버는 사용자 정보를 기반으로 세션을 생성하고, 해당 세션 ID를 쿠키에 저장해 클라이언트에 전달이후 클라이언트는 요청마다 쿠키에 담긴 세션 ID를 서버에 전송서버는 세션 저장소에서 이 세션 ID를 확인해 사용자 정보를 인증특징세션 데이터는 서버에 저장되며, 클라이언트는 세션 ID만 보유서버가 상태(state)를 유지해야 함 (stateful)장점서버가 세션 데이터를 직접 관리하므로 보안이 상대적으로 강함세션 만료 등 세부 제어가 용이단점서버에 세션 저장소를 유지해야 하..
2024.11.27 -
react hooks의 등장으로 거의 대체된 render props 방식
Render Props는 리액트에서 컴포넌트 간에 코드 재사용을 쉽게 하기 위한 패턴이다. 주로 함수형 컴포넌트에서 사용되며, 컴포넌트의 props로 함수를 전달받아 렌더링 동작을 동적으로 정의할 수 있다. Render Props 기본 예제 function DataFetcher({ render }) { const data = { name: 'Alice', age: 25 }; // 가상의 데이터 return {render(data)};}function App() { return ( Name: {data.name}, Age: {data.age}} /> );}DataFetcher 컴포넌트는 render라는 prop으로 함수를 받는다.이 함수는 데이터를 렌더링할..
2024.11.26 -
iron-session과 next-auth
iron-session과 next-auth는 Next.js에서 사용자 인증을 구현하기 위해 사용할 수 있는 두 가지 라이브러리다. 하지만 각각의 목적과 사용 방식이 다르다. iron-session목적세션 기반 인증 및 데이터 저장주요 기능암호화된 세션 쿠키를 사용해 사용자 데이터를 안전하게 저장커스텀 인증 로직을 구현해야 함인증 플로우가 간단한 애플리케이션에 적합next-auth목적OAuth와 같은 다양한 인증 방법을 쉽게 통합주요 기능Google, Facebook, GitHub, Twitter 등의 소셜 로그인 지원데이터베이스 연동을 통한 사용자 정보 저장 및 관리서버 및 클라이언트에서 인증 상태를 쉽게 관리 가능복잡한 인증 요구사항이 있는 애플리케이션에 적합
2024.11.25 -
pseudo class와 pseudo element
pseudo class (:pseudo-class) 특정 상태의 요소를 선택할 때 사용한다. 요소 자체는 변하지 않지만, 조건에 따라 스타일을 적용한다. 사용 예:hover사용자가 마우스를 올렸을 때:nth-child(n)특정 위치의 자식을 선택:focus요소가 포커스를 받을 때 a:hover { color: red;}링크에 마우스를 올렸을 때 텍스트 색이 빨간색으로 바뀐다. pseudo element (::pseudo-element) HTML 요소의 특정 부분을 선택하거나 가상의 요소를 만들어 스타일링할 때 사용한다. 실제 DOM 요소에 영향을 주지 않고 특정 부분만 스타일 적용한다. 사용 예::before요소의 시작 부분에 가상의 콘텐츠 추가::after요소의 끝부분에 가상의 콘텐츠 추가::fir..
2024.11.24 -
IntersectionObserver
IntersectionObserver는 자바스크립트 API로, DOM 요소가 뷰포트나 특정 부모 요소와 교차(intersect)하는 시점을 비동기적으로 관찰할 수 있게 해준다. 따라서 주로 lazy loading, 무한 스크롤, 요소 노출 감지 등에 활용된다. 주요 특징 성능 최적화 : 스크롤 이벤트를 직접 사용하는 방식보다 효율적이며, 브라우저 성능에 미치는 영향을 최소화한다.비동기적 처리 : 교차 상태를 감지하는 콜백이 비동기로 실행된다.다양한 관찰 옵션 : threshold, root, rootMargin 등 다양한 조건을 설정할 수 있다. 구성 1. IntersectionObserver 생성const observer = new IntersectionObserver(callback, options)..
2024.11.23 -
n+1 문제
n+1 문제는 데이터베이스 쿼리 최적화와 관련된 성능 문제로, 주로 ORM(Object Relational Mapping) 프레임워크에서 발생한다. 간단히 말하면, 한 번에 해결할 수 있는 작업을 불필요하게 여러 번 쿼리하는 문제다. 기본 개념 n+1 쿼리는 특정 객체를 가져오고 관련된 객체를 로드할 때, 1개의 메인 쿼리로 상위 데이터를 가져온 후,n개의 추가 쿼리로 관련 데이터를 각각 개별적으로 가져오는 경우를 말한다.이로 인해 필요 이상으로 많은 데이터베이스 호출이 발생하게 되고, 성능 저하를 초래한다. 예제 게시글과 댓글이 1:N 관계에 있다고 가정하자. 그리고 게시글 리스트를 조회하면서 각 게시글에 달린 댓글도 가져오려는 경우를 생각해보자. 이때 n+1 쿼리가 발생할 수 있다.-- 1개의 메인 ..
2024.11.22