20240202

귤금·2024년 2월 2일

Node.js 4기 TIL

목록 보기
28/86

Today?

Node.js 숙련주차 2주차

복습하듯 쭉 돌려보고...
입문주차에서 AWS 배포 관련 강의자료도 한 번 더 살펴봄
왜 자꾸 에러가 나나 했더니, git pull을 한 뒤에 npx prisma generate를 해주지 않아서 aws 서버 안에 설치되어 있던 prisma와 마이그레이션 관련 충돌이 나는 모양이었다...
스키마 등 prisma 관련 파일이 변경되면 git pull후에 프리즈마 generate를 한 번 더 해줄것


개인과제

회원 탈퇴 기능 구현

delete를 전송해서 회원 탈퇴(삭제) 기능을 만드려고 했는데 자꾸 오류가 났다. 살펴보니까 token 테이블과 Users 테이블이 엮인 포린 키 관련 에러처럼 보였다. 회원 탈퇴를 할 때 해당 유저의 token 정보가 테이블에 남아 있어서... (userId를 외래키로 공유중) Foreign Key Constraint Failed 에러가 나는 것.
회원 삭제를 진행할 때 토큰 테이블의 데이터도 삭제해주는 로직을 추가하니까 정상적으로 처리되었다.
그런데 분명 지난 번 강의에서 포린키로 묶은 데이터가 변경될 때 다른 데이터에 어떻게 반영할지 수동으로 설정할 수 있는 옵션이 있다고 들은 것 같아서... 찾아봄.
ON DELETE CASCADE 옵션 주면 된다고 함.

model RefreshTokens {
  id         Int      @id @default(autoincrement())
  userId     Int      @unique
  token      String   @unique
  expiresAt  DateTime
  createdAt  DateTime @default(now())

  user Users @relation(fields: [userId], references: [userId], onDelete: Cascade)

  @@map("RefreshTokens")
}

이러면 리프래시 토큰 테이블과 연결된 유저 데이터가 삭제될 때 토큰도 자동으로 삭제된다. 이걸로 리팩토링 하고 테스트해봐야겠다...

카카오 로그인 연동

참고
https://developers.kakao.com/
https://devhaks.github.io/2019/05/31/oauth2/

OAuth

  • 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단
  • 접근 위임을 위한 개방형 표준
  • 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜

오늘 배운 것

회고

0개의 댓글