컴퓨터 공학 기초/자료구조
Stack/Queue 이란?
2023.04.20
Stack(스택) 이란? 제한적으로 접근할 수 있는 나열 구조이며, 접근 방법은 언제나 목록의 끝에서만 일어납니다. 끝먼저내기 목록이라고도 합니다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last in Firsh Out)으로 되어 있습니다. 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(Push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 됩니다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO구조 라고 합니다. 그렇다면 이 스택은 어디에 활용이 될까요? - 웹 브라우저 뒤로가지 : 가장 나중에 열린 페이지부터 뒤로 가기. - 문서작업에서 Ctrl + Z : 가장 나중에 수정한 내용을 ..
개발 기록/의존성 오류 모음
[npm 에러 해결] faker.js NotFound 오류? 개발자가 의도적으로 망가뜨렸습니다
2023.04.19
faker.js NotFound 오류 해결기상황npm install faker 후 코드를 실행했더니 아래와 같은 에러가 발생했습니다:원인이 에러는 단순한 설치 문제가 아니었습니다.faker.js와 colors.js의 개발자가 의도적으로 무한 루프 오류를 삽입해수천 개의 프로젝트에서 동일한 문제가 발생하도록 만들었습니다.GitHub에서도 이슈가 논란이 되었으며,해당 버전 이후로는 정상적인 실행이 불가능하도록 설정되어 있었습니다.해결 방법1. 기존 faker 제거npm uninstall faker npm install faker@5교훈오픈소스도 "사람이 만드는 것"⇒ 버전 고정(lock) 및 유지보수 여부 확인은 매우 중요합니다.조직 단위에선 package-lock.json을 활용하거나,사내 npm reg..
백엔드 개발/인증 · 보안
[Node.js] JWT 에러 핸들링
2023.04.19
토큰을 발행해준 후, verify 과정에서 Invalid, expired를 처리해줘야 할까 고민이 들었습니다. 그래서 상황에 맞는 시나리오를 그리고 어떻게 해결해 나갈 것인지 코드를 작성하였습니다.시나리오1. 로그인을 하면 AccessToken과 RefreshToken을 발행합니다. - AccessToken은 Bearer, RefreshToken은 Redis에 저장을 해줍니다.2. 사용자가 인증일 필요한 API에 접근하고자 할 때, 검증 미들웨어(authMiddleware)를 통해 검사함. Case 1 : AccessToken 만료, RefreshToken 만료 : ErrorCase 2 : AccessToken 만료, RefreshToken 유효 : AccessToken 재발급Case 3 : Acces..
개발 기록/트러블슈팅 · 환경 설정
MySQL 사용자 인증 오류 1251 해결 방법 (Node.js 연동 시)
2023.04.19
MySQL 1251 오류 해결기 - ER_NOT_SUPPORTED_AUTH_MODE상황로컬에서 정상 동작하던 Node.js + MySQL 코드를 AWS EC2로 옮긴 뒤,다음과 같은 오류가 발생하였습니다:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client코드 예시app.use(express.json());const connection = mysql.createConnection({ dbconfig });connection.query('SELECT * from User', (error, rows, fields) => ..
프론트엔드
[Axios] 로그인 후 인증 실패? Authorization 헤더를 잊지 마세요!
2023.04.19
AccessToken이 프론트에서 넘어오지 않는 이슈 해결기상황로그인 후 AccessToken은 정상적으로 발급되어 localStorage에 저장됨하지만 다른 페이지 요청 시 서버에 토큰이 포함되지 않음인증 에러 발생 (401 Unauthorized)원인프론트에서 API 요청 시 Authorization 헤더를 설정하지 않았기 때문입니다.AccessToken은 저장만 되었고,실제 요청 시 header에 포함되지 않아 서버에서 인증 불가 상태가 됨해결 방법Axios 전역 설정 추가axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;이렇게 설정하면 이후 모든 요청에 자동으로 토큰이 포함됩니다.실무 팁localStorage, ses..