728x90 분류 전체보기177 System.Text.Json을 활용한 네이버 로그인 응답 처리 개선 네이버 사용자 정보 응답 처리 개선 - JsonDocument → JsonSerializer기존에는 네이버 사용자 정보를 처리할 때, 아래처럼 JsonDocument와 GetProperty()를 활용하는 방식이 일반적이었습니다:var userInfoJson = JsonDocument.Parse(json).RootElement;var response = userInfoJson.GetProperty("response");var naverId = response.GetProperty("id").GetString();var email = response.TryGetProperty("email", out var emailProp) ? emailProp.GetString() : null;하지만 이 방식은 유지보수성.. 2025. 4. 10. [SSO] 네이버 소셜 로그인 연동 및 보안 고려사항, (팝업 기반 소셜 로그인 처리 방식) 1. 네이버 소셜 로그인 연동 개요웹 애플리케이션에서 네이버 소셜 로그인을 연동하는 과정은 다음과 같습니다:사용자가 네이버 로그인 버튼을 클릭하면, 팝업 창을 통해 네이버 로그인 페이지로 리다이렉트됩니다.사용자가 네이버에서 인증을 완료하면, 팝업 창은 액세스 토큰을 포함한 정보를 부모 창(메인 애플리케이션)으로 전달합니다.부모 창은 전달받은 액세스 토큰을 사용하여 네이버 API로부터 사용자 정보를 가져옵니다.2. 팝업 창에서 부모 창으로 데이터 전달팝업 창에서 부모 창으로 데이터를 전달하기 위해 window.opener.postMessage 메서드를 사용합니다. 예를 들어, 백엔드에서 다음과 같은 HTML을 반환하여 팝업 창에서 부모 창으로 데이터를 전달할 수 있습니다: var html = $@" .. 2025. 4. 10. [OAuth2] 기존 시스템에 네이버 소셜 로그인 기능 연동하기 (JWT + 팝업 방식) ✅ 프로젝트 목표기존 이메일/비밀번호 로그인 시스템이 있는 웹 애플리케이션에 네이버 소셜 로그인(OAuth2) 기능을 추가합니다. 로그인 후 네이버 계정을 통해 별도 회원으로 가입되며, JWT 방식으로 인증 처리됩니다.✅ 전체 동작 시나리오사용자가 "네이버 로그인" 버튼 클릭팝업 창으로 네이버 로그인 화면으로 이동로그인 성공 후, 등록된 redirect_uri로 code 와 state 전달백엔드에서 access_token 요청 → 사용자 정보 요청네이버 UID로 사용자 조회 → 없으면 자동 회원가입JWT 발급 → 팝업창에서 부모창으로 전달부모창은 토큰 저장 후 로그인 상태 처리✅ 핵심 처리 방식naverId: 네이버에서 제공하는 비식별 UID로, 계정 식별자로 사용됨이메일: 사용자 정보 중 하나지만, 로.. 2025. 4. 2. [C#] ASP.NET Core에서 클라이언트 데이터 전달 방법 (쿼리 스트링 vs 경로 변수) ASP.NET Core에서 클라이언트가 데이터를 API로 전달하는 방법에는 크게 두 가지가 있습니다.쿼리 스트링(Query Parameter) - ?key=value 형식으로 데이터를 전달경로 변수(Path Parameter) - URL 경로 일부로 데이터를 포함이 글에서는 두 가지 방법의 차이점을 설명하고, 각각의 코드 예제와 시행착오를 공유합니다.1. 쿼리 스트링 방식 (Query Parameter)쿼리 스트링 방식은 URL 뒤에 ?key=value 형태로 데이터를 전달하는 방법입니다.📌 클라이언트 요청 예제import axios from 'axios';const dataToSend = "https://example.com";const encodedData = btoa(unescape(encodeU.. 2025. 3. 19. [git] semantic-release에서 커밋 실수로 누락된 배포 해결 방법 semantic-release는 Git 커밋 메시지를 기반으로 버전 관리와 자동 배포를 수행하는 도구입니다. 하지만 실수로 fix 또는 feat와 같은 Conventional Commit 태그를 빼먹었다면, 배포가 누락될 수 있습니다. 이런 상황에서 배포를 다시 트리거하는 방법을 자세히 안내합니다.1. 왜 semantic-release에서 커밋 메시지가 중요한가?semantic-release는 Conventional Commits 방식을 사용하여 커밋 메시지를 분석하고, 이에 따라 자동으로 버전을 업데이트하고 배포를 진행합니다.예를 들어, 다음과 같은 규칙이 있습니다:fix: - 패치 버전 (bug 수정)feat: - 마이너 버전 (새로운 기능 추가)feat!: BREAKING CHANGE - 메이저 버.. 2025. 3. 17. [git] 회원가입 비밀번호 추천 생성조건, 정규식 회원가입 시 비밀번호를 어떻게 설정해야 할지 고민해본 적 있으신가요? 단순히 '123456'이나 'password' 같은 쉬운 비밀번호를 사용하면 계정이 해킹될 위험이 매우 큽니다. 따라서 보다 안전한 계정 보호를 위해 강력한 비밀번호 정책이 필요합니다. 이 글에서는 비밀번호 생성 조건과 실제 시행착오 사례를 통해 어떻게 하면 더 안전한 비밀번호를 만들 수 있는지에 대해 자세히 안내해드립니다.정규식(Regular Expression)이란?정규식은 문자열에서 특정한 패턴을 찾거나, 검증하거나, 치환하는 데 사용되는 문자열입니다. 예를 들어, 이메일 주소, 전화번호, 비밀번호와 같은 입력값을 검증할 때 유용하게 사용됩니다.정규식의 작동 원리정규식은 문자열을 패턴과 비교하여 일치 여부를 판단합니다. 정규식의 .. 2025. 3. 17. [React] Material-UI Popover 위치 보정과 애니메이션 적용 시행착오 기록 이번 글에서는 Material-UI의 Popover 컴포넌트 사용 중 겪었던 시행착오와, 위치 보정 및 자연스러운 애니메이션을 적용하기까지의 해결 과정을 기록합니다.1. 문제 상황처음에는 Material-UI의 Popover를 사용하여 특정 버튼을 클릭하면 팝업이 열리도록 구현하였습니다. 하지만 팝업 내부의 내용이 확장될 때 다음과 같은 문제가 발생했습니다.내용이 확장되면 Popover가 화면 밖으로 벗어나는 현상Popover 위치가 자동으로 보정되지 않아 부자연스러운 UI위치 보정이 되어도 움직임이 너무 딱딱해서 UX가 나쁨2. 처음 시도한 방법 (실패)처음에는 Popover를 Popper로 변경하여 popperRef를 사용해 위치를 직접 업데이트하려고 했습니다. {/* 내용 */} 문제점:기존.. 2025. 3. 14. [React] Material-UI Popover에서 Popper로 전환한 시행착오 1. 배경 및 요구사항프로젝트에서는 Popover를 사용하여 특정 UI를 구현하고자 하였다. 그러나 팝오버가 열려 있는 동안에도 배경 요소와 상호작용할 수 있도록 하려는 요구사항이 존재하였다.2. 초기 시도: Popover의 ModalProps 활용Material-UI Popover는 내부적으로 Modal을 사용하여 포커스를 팝오버 내부로 강제하는 특성을 지니고 있다. 이에 ModalProps를 이용하여 백드롭 숨김, 스크롤 잠금 해제, 포커스 강제 해제를 시도하였다. 아래 코드는 그 예이다. {/* Popover 내용 */}그러나 이 방법을 사용하면 TypeScript 에러가 발생하였다.오류 메시지는 다음과 같다.Property 'ModalProps' does not exist on type 'Int.. 2025. 3. 14. [React] React Query 사용법 | 데이터 캐싱과 리페칭 쉽게 정리 React Query란?React Query는 React 애플리케이션에서 서버 상태(데이터)를 효율적으로 관리하기 위한 데이터 패칭 라이브러리이다. API로부터 데이터를 가져오고, 캐싱하고, 업데이트하며, 동기화하는 작업을 간편하게 만들어 준다. 서버와 클라이언트 간의 데이터 통신을 효율적으로 관리하여 사용자 경험을 개선할 수 있다.✅ React Query, 왜 사용해야 할까?자동 캐싱과 데이터 동기화데이터를 자동으로 캐싱하고, 필요한 경우에만 서버로부터 데이터를 다시 가져온다.백그라운드에서 데이터를 자동으로 동기화하여 최신 상태를 유지할 수 있다.서버 상태 관리 간소화API 호출, 로딩 상태, 에러 처리 등을 직접 관리할 필요 없이 간편하게 처리할 수 있다.편리한 리페칭(Refetching)특정 조건(.. 2025. 3. 14. 이전 1 2 3 4 ··· 20 다음 728x90